Skip to content

Commit

Permalink
Make L1MuDTTFConfig thread safe
Browse files Browse the repository at this point in the history
Minimized the number of statics which could be obtained from L1MuDTTFConfig
and made the remaining ones atomic.
This allows the last thread_unsafe::DQMEDAnalyzer, L1TdeCSCTF,
to be converted to a DQMEDAnalyzer.
  • Loading branch information
Dr15Jones committed May 10, 2017
1 parent 061366b commit af1c16b
Show file tree
Hide file tree
Showing 13 changed files with 128 additions and 140 deletions.
6 changes: 2 additions & 4 deletions DQM/L1TMonitor/interface/L1TdeCSCTF.h
Original file line number Diff line number Diff line change
Expand Up @@ -39,17 +39,15 @@
#include "TTree.h"
#include "TFile.h"

class L1TdeCSCTF : public thread_unsafe::DQMEDAnalyzer {
class L1TdeCSCTF : public DQMEDAnalyzer {
private:
edm::EDGetTokenT<L1CSCTrackCollection> dataTrackProducer;
edm::EDGetTokenT<L1CSCTrackCollection> emulTrackProducer;
edm::EDGetTokenT<CSCTriggerContainer<csctf::TrackStub> > dataStubProducer;
edm::EDGetTokenT<L1MuDTChambPhContainer> emulStubProducer;

const L1MuTriggerScales *ts;
CSCTFPtLUT* ptLUT_;
edm::ParameterSet ptLUTset;
CSCTFDTReceiver* my_dtrc;
std::unique_ptr<CSCTFDTReceiver> my_dtrc;

// Define Monitor Element Histograms
////////////////////////////////////
Expand Down
6 changes: 1 addition & 5 deletions DQM/L1TMonitor/src/L1TdeCSCTF.cc
Original file line number Diff line number Diff line change
Expand Up @@ -44,9 +44,6 @@ L1TdeCSCTF::L1TdeCSCTF(ParameterSet const& pset) {

m_dirName = pset.getUntrackedParameter("DQMFolder", string("L1TEMU/CSCTFexpert"));

ts=0;
ptLUT_ = 0;

ptLUTset = pset.getParameter<ParameterSet>("PTLUT");

outFile = pset.getUntrackedParameter<string>("outFile", "");
Expand Down Expand Up @@ -89,7 +86,7 @@ L1TdeCSCTF::L1TdeCSCTF(ParameterSet const& pset) {
} // sectorItr loop
} // endcapItr loop
*/
my_dtrc = new CSCTFDTReceiver();
my_dtrc =std::make_unique<CSCTFDTReceiver>();
}
void L1TdeCSCTF::dqmBeginRun(const edm::Run& r, const edm::EventSetup& c){
}
Expand Down Expand Up @@ -639,5 +636,4 @@ void L1TdeCSCTF::analyze(Event const& e, EventSetup const& es){
}
}
}
if(ptLUT_) delete ptLUT_;
}
6 changes: 4 additions & 2 deletions L1Trigger/CSCTrackFinder/src/CSCTFDTReceiver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,10 @@ CSCTriggerContainer<csctf::TrackStub> CSCTFDTReceiver::process(const L1MuDTChamb
dtstubs.clear();
if( !dttrig ) return dtstubs;

const int dt_minBX = L1MuDTTFConfig::getBxMin();
const int dt_maxBX = L1MuDTTFConfig::getBxMax();
//Need a better way to get these values since this
// violates CMSSW coding policy
const int dt_minBX = L1MuDTTFConfig::getBxMinGlobally();
const int dt_maxBX = L1MuDTTFConfig::getBxMaxGlobally();

const int dt_toffs = 0;// changed since DT tpg now centers around zero //abs(dt_maxBX - dt_minBX);

Expand Down
15 changes: 8 additions & 7 deletions L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
#include "CondFormats/L1TObjects/interface/L1MuDTPtaLut.h"
#include "CondFormats/DataRecord/interface/L1MuDTPtaLutRcd.h"
#include "L1Trigger/DTTrackFinder/interface/L1MuDTTrack.h"
#include "L1Trigger/DTTrackFinder/interface/L1MuDTTrackFinder.h"

using namespace std;

Expand All @@ -55,7 +56,9 @@ using namespace std;

L1MuDTAssignmentUnit::L1MuDTAssignmentUnit(L1MuDTSectorProcessor& sp, int id) :
m_sp(sp), m_id(id),
m_addArray(), m_TSphi(), m_ptAssMethod(NODEF) {
m_addArray(), m_TSphi(), m_ptAssMethod(NODEF),
nbit_phi(12),nbit_phib(10)
{

m_TSphi.reserve(4); // a track candidate can consist of max 4 TS
reset();
Expand Down Expand Up @@ -146,8 +149,8 @@ void L1MuDTAssignmentUnit::PhiAU(const edm::EventSetup& c) {

c.get< L1MuDTPhiLutRcd >().get( thePhiLUTs );

int sh_phi = 12 - L1MuDTTFConfig::getNbitsPhiPhi();
int sh_phib = 10 - L1MuDTTFConfig::getNbitsPhiPhib();
int sh_phi = 12 - m_sp.tf().config()->getNbitsPhiPhi();
int sh_phib = 10 - m_sp.tf().config()->getNbitsPhiPhib();

const L1MuDTTrackSegPhi* second = getTSphi(2); // track segment at station 2
const L1MuDTTrackSegPhi* first = getTSphi(1); // track segment at station 1
Expand Down Expand Up @@ -531,13 +534,11 @@ int L1MuDTAssignmentUnit::phiDiff(int stat1, int stat2) const {
//
void L1MuDTAssignmentUnit::setPrecision() {

nbit_phi = L1MuDTTFConfig::getNbitsPtaPhi();
nbit_phib = L1MuDTTFConfig::getNbitsPtaPhib();
nbit_phi = m_sp.tf().config()->getNbitsPtaPhi();
nbit_phib = m_sp.tf().config()->getNbitsPtaPhib();

}


// static data members

unsigned short int L1MuDTAssignmentUnit::nbit_phi = 12;
unsigned short int L1MuDTAssignmentUnit::nbit_phib = 10;
10 changes: 5 additions & 5 deletions L1Trigger/DTTrackFinder/src/L1MuDTAssignmentUnit.h
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@ class L1MuDTAssignmentUnit : public L1AbstractProcessor {
void QuaAU();

/// set precision of phi and phib
static void setPrecision();
void setPrecision();

private:

Expand All @@ -84,10 +84,10 @@ class L1MuDTAssignmentUnit : public L1AbstractProcessor {
const L1MuDTTrackSegPhi* getTSphi(int station) const;

/// convert sector Id to 8 bit code (= sector center)
static int convertSector(int);
int convertSector(int);

/// determine charge
static int getCharge(PtAssMethod);
int getCharge(PtAssMethod);

/// determine pt assignment method
PtAssMethod getPtMethod() const;
Expand All @@ -109,8 +109,8 @@ class L1MuDTAssignmentUnit : public L1AbstractProcessor {

edm::ESHandle< L1MuDTPhiLut > thePhiLUTs; ///< phi-assignment look-up tables
edm::ESHandle< L1MuDTPtaLut > thePtaLUTs; ///< pt-assignment look-up tables
static unsigned short nbit_phi; ///< # of bits used for pt-assignment
static unsigned short nbit_phib; ///< # of bits used for pt-assignment
unsigned short nbit_phi; ///< # of bits used for pt-assignment
unsigned short nbit_phib; ///< # of bits used for pt-assignment

};

Expand Down
22 changes: 12 additions & 10 deletions L1Trigger/DTTrackFinder/src/L1MuDTEUX.cc
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
//-------------------------------

#include "L1Trigger/DTTrackFinder/src/L1MuDTTFConfig.h"
#include "L1Trigger/DTTrackFinder/interface/L1MuDTTrackFinder.h"
#include "CondFormats/L1TObjects/interface/L1MuDTExtParam.h"
#include "L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.h"
#include "L1Trigger/DTTrackFinder/src/L1MuDTSEU.h"
Expand All @@ -51,9 +52,9 @@ L1MuDTEUX::L1MuDTEUX(const L1MuDTSectorProcessor& sp, const L1MuDTSEU& seu, int
m_sp(sp), m_seu(seu), m_id(id),
m_result(false), m_quality(0), m_address(15),
m_start(0), m_target(0),
theExtFilter(L1MuDTTFConfig::getExtTSFilter()),
nbit_phi(L1MuDTTFConfig::getNbitsExtPhi()),
nbit_phib(L1MuDTTFConfig::getNbitsExtPhib())
theExtFilter(sp.tf().config()->getExtTSFilter()),
nbit_phi(sp.tf().config()->getNbitsExtPhi()),
nbit_phib(sp.tf().config()->getNbitsExtPhib())
{
}

Expand Down Expand Up @@ -91,12 +92,13 @@ void L1MuDTEUX::run(const edm::EventSetup& c) {
c.get< L1MuDTExtLutRcd >().get( theExtLUTs );
c.get< L1MuDTTFParametersRcd >().get( pars );

if ( L1MuDTTFConfig::Debug(4) ) cout << "Run EUX " << m_id << endl;
if ( L1MuDTTFConfig::Debug(4) ) cout << "start : " << *m_start << endl;
if ( L1MuDTTFConfig::Debug(4) ) cout << "target : " << *m_target << endl;
const bool debug4 = m_sp.tf().config()->Debug(4);
if ( debug4 ) cout << "Run EUX " << m_id << endl;
if ( debug4 ) cout << "start : " << *m_start << endl;
if ( debug4 ) cout << "target : " << *m_target << endl;

if ( m_start == 0 || m_target == 0 ) {
if ( L1MuDTTFConfig::Debug(4) ) cout << "Error: EUX has no data loaded" << endl;
if ( debug4 ) cout << "Error: EUX has no data loaded" << endl;
return;
}

Expand All @@ -118,7 +120,7 @@ void L1MuDTEUX::run(const edm::EventSetup& c) {

}

if ( L1MuDTTFConfig::Debug(5) ) cout << "EUX : using look-up table : "
if ( m_sp.tf().config()->Debug(5) ) cout << "EUX : using look-up table : "
<< static_cast<Extrapolation>(lut_idx)
<< endl;

Expand Down Expand Up @@ -165,7 +167,7 @@ void L1MuDTEUX::run(const edm::EventSetup& c) {

// is phi-difference within the extrapolation window?
bool openlut = pars->get_soc_openlut_extr(m_sp.id().wheel(), m_sp.id().sector());
if (( diff >= low && diff <= high ) || L1MuDTTFConfig::getopenLUTs() || openlut ) {
if (( diff >= low && diff <= high ) || m_sp.tf().config()->getopenLUTs() || openlut ) {
m_result = true;
int qual_st = m_start->quality();
int qual_ta = m_target->quality();
Expand All @@ -178,7 +180,7 @@ void L1MuDTEUX::run(const edm::EventSetup& c) {
m_address = m_id;
}

if ( L1MuDTTFConfig::Debug(5) ) cout << "diff : " << low << " "
if ( m_sp.tf().config()->Debug(5) ) cout << "diff : " << low << " "
<< diff << " " << high << " : "
<< m_result << " " << endl;

Expand Down
4 changes: 2 additions & 2 deletions L1Trigger/DTTrackFinder/src/L1MuDTEtaProcessor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ using namespace std;

L1MuDTEtaProcessor::L1MuDTEtaProcessor(const L1MuDTTrackFinder& tf, int id, edm::ConsumesCollector&& iC) :
m_tf(tf), m_epid(id), m_foundPattern(0), m_tseta(15),
m_DTDigiToken(iC.consumes<L1MuDTChambThContainer>(L1MuDTTFConfig::getDTDigiInputTag())) {
m_DTDigiToken(iC.consumes<L1MuDTChambThContainer>(m_tf.config()->getDTDigiInputTag())) {

m_tseta.reserve(15);

Expand All @@ -85,7 +85,7 @@ L1MuDTEtaProcessor::~L1MuDTEtaProcessor() {}
//
void L1MuDTEtaProcessor::run(int bx, const edm::Event& e, const edm::EventSetup& c) {

if ( L1MuDTTFConfig::getEtaTF() ) {
if ( m_tf.config()->getEtaTF() ) {
receiveData(bx,e,c);
runEtaTrackFinder(c);
}
Expand Down
3 changes: 2 additions & 1 deletion L1Trigger/DTTrackFinder/src/L1MuDTExtrapolationUnit.cc
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
//-------------------------------

#include "L1Trigger/DTTrackFinder/src/L1MuDTTFConfig.h"
#include "L1Trigger/DTTrackFinder/interface/L1MuDTTrackFinder.h"
#include "CondFormats/L1TObjects/interface/L1MuDTExtParam.h"
#include "L1Trigger/DTTrackFinder/src/L1MuDTSEU.h"
#include "L1Trigger/DTTrackFinder/src/L1MuDTEUX.h"
Expand Down Expand Up @@ -124,7 +125,7 @@ void L1MuDTExtrapolationUnit::run(const edm::EventSetup& c) {
// use EX21 to cross-check EX12
//
bool run_21 = pars->get_soc_run_21(m_sp.id().wheel(), m_sp.id().sector());
if ( L1MuDTTFConfig::getUseEX21() || run_21 ) {
if ( m_sp.tf().config()->getUseEX21() || run_21 ) {

// search for EX12 + EX21 single extrapolation units
for ( unsigned int startAdr = 0; startAdr < 2; startAdr++ ) {
Expand Down
6 changes: 3 additions & 3 deletions L1Trigger/DTTrackFinder/src/L1MuDTSectorProcessor.cc
Original file line number Diff line number Diff line change
Expand Up @@ -110,7 +110,7 @@ void L1MuDTSectorProcessor::run(int bx, const edm::Event& e, const edm::EventSet

// check content of data buffer
if ( m_DataBuffer ) {
if ( L1MuDTTFConfig::Debug(4) && m_DataBuffer->numberTSphi() > 0 ) {
if ( m_tf.config()->Debug(4) && m_DataBuffer->numberTSphi() > 0 ) {
cout << "Phi track segments received by " << m_spid << " : " << endl;
m_DataBuffer->printTSphi();
}
Expand All @@ -121,7 +121,7 @@ void L1MuDTSectorProcessor::run(int bx, const edm::Event& e, const edm::EventSet
if ( m_EU && m_DataBuffer && m_DataBuffer->numberTSphi() > 1 ) {
m_EU->run(c);
n_ext = m_EU->numberOfExt();
if ( L1MuDTTFConfig::Debug(3) && n_ext > 0 ) {
if ( m_tf.config()->Debug(3) && n_ext > 0 ) {
cout << "Number of successful extrapolations : " << n_ext << endl;
m_EU->print();
}
Expand All @@ -133,7 +133,7 @@ void L1MuDTSectorProcessor::run(int bx, const edm::Event& e, const edm::EventSet
// perform track assembling
if ( m_TA && n_ext > 0 ) {
m_TA->run();
if ( L1MuDTTFConfig::Debug(3) ) m_TA->print();
if ( m_tf.config()->Debug(3) ) m_TA->print();
}

// assign pt, eta, phi and quality
Expand Down
17 changes: 9 additions & 8 deletions L1Trigger/DTTrackFinder/src/L1MuDTSectorReceiver.cc
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@
#include "L1Trigger/DTTrackFinder/src/L1MuDTDataBuffer.h"
#include "L1Trigger/DTTrackFinder/src/L1MuDTTrackSegLoc.h"
#include "L1Trigger/DTTrackFinder/src/L1MuDTTrackSegPhi.h"
#include "L1Trigger/DTTrackFinder/interface/L1MuDTTrackFinder.h"
#include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhDigi.h"
#include "DataFormats/L1DTTrackFinder/interface/L1MuDTChambPhContainer.h"
#include "DataFormats/L1CSCTrackFinder/interface/TrackStub.h"
Expand All @@ -54,8 +55,8 @@ using namespace std;
//----------------
L1MuDTSectorReceiver::L1MuDTSectorReceiver(L1MuDTSectorProcessor& sp, edm::ConsumesCollector && iC) :
m_sp(sp),
m_DTDigiToken(iC.consumes<L1MuDTChambPhContainer>(L1MuDTTFConfig::getDTDigiInputTag())),
m_CSCTrSToken(iC.mayConsume<CSCTriggerContainer<csctf::TrackStub> >(L1MuDTTFConfig::getCSCTrSInputTag())) {
m_DTDigiToken(iC.consumes<L1MuDTChambPhContainer>(m_sp.tf().config()->getDTDigiInputTag())),
m_CSCTrSToken(iC.mayConsume<CSCTriggerContainer<csctf::TrackStub> >(m_sp.tf().config()->getCSCTrSInputTag())) {
}


Expand Down Expand Up @@ -85,7 +86,7 @@ void L1MuDTSectorReceiver::run(int bx, const edm::Event& e, const edm::EventSetu
receiveDTBXData(bx, e, c);

// get track segments from CSC chamber trigger
if ( L1MuDTTFConfig::overlap() && m_sp.ovl() ) {
if ( m_sp.tf().config()->overlap() && m_sp.ovl() ) {
receiveCSCData(bx, e, c);
}

Expand Down Expand Up @@ -163,10 +164,10 @@ void L1MuDTSectorReceiver::receiveDTBXData(int bx, const edm::Event& e, const ed
bool skipTS = false;

bool nbx_del = pars->get_soc_nbx_del(m_sp.id().wheel(), m_sp.id().sector());
if ( L1MuDTTFConfig::getTSOutOfTimeFilter() || nbx_del ) {
if ( m_sp.tf().config()->getTSOutOfTimeFilter() || nbx_del ) {

int sh_phi = 12 - L1MuDTTFConfig::getNbitsExtPhi();
int tolerance = L1MuDTTFConfig::getTSOutOfTimeWindow();
int sh_phi = 12 - m_sp.tf().config()->getNbitsExtPhi();
int tolerance = m_sp.tf().config()->getTSOutOfTimeWindow();

L1MuDTChambPhDigi const * tsPreviousBX_1 = dttrig->chPhiSegm1(wheel,station,sector,bx-1);
if ( tsPreviousBX_1 ) {
Expand Down Expand Up @@ -221,7 +222,7 @@ void L1MuDTSectorReceiver::receiveDTBXData(int bx, const edm::Event& e, const ed
//
void L1MuDTSectorReceiver::receiveCSCData(int bx, const edm::Event& e, const edm::EventSetup& c) {

if ( (L1MuDTTFConfig::getCSCTrSInputTag()).label() == "none" ) return;
if ( (m_sp.tf().config()->getCSCTrSInputTag()).label() == "none" ) return;

if ( bx < -6 || bx > 6 ) return;

Expand Down Expand Up @@ -269,7 +270,7 @@ void L1MuDTSectorReceiver::receiveCSCData(int bx, const edm::Event& e, const edm
if ( msks->get_inrec_chdis_csc(m_sp.id().wheel(), m_sp.id().sector()) ) continue;
if ( qual < pars->get_soc_qual_csc(m_sp.id().wheel(), m_sp.id().sector()) ) continue;
if ( pars->get_soc_csc_etacanc(m_sp.id().wheel(), m_sp.id().sector()) && etaFlag ) continue;
if ( L1MuDTTFConfig::getEtaCanc() && etaFlag ) continue;
if ( m_sp.tf().config()->getEtaCanc() && etaFlag ) continue;

if ( ncsc < 2 ) {
int address = 16 + ncsc;
Expand Down
30 changes: 6 additions & 24 deletions L1Trigger/DTTrackFinder/src/L1MuDTTFConfig.cc
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,8 @@ void L1MuDTTFConfig::setDefaults() {
// set min and max bunch crossing
m_BxMin = m_ps->getUntrackedParameter<int>("BX_min",-9);
m_BxMax = m_ps->getUntrackedParameter<int>("BX_max", 7);
s_BxMin = m_BxMin;
s_BxMax = m_BxMax;

// set Filter for Extrapolator
m_extTSFilter = m_ps->getUntrackedParameter<int>("Extrapolation_Filter",1);
Expand Down Expand Up @@ -171,27 +173,7 @@ void L1MuDTTFConfig::setDefaults() {

}


// static data members

edm::InputTag L1MuDTTFConfig::m_DTDigiInputTag = edm::InputTag();
edm::InputTag L1MuDTTFConfig::m_CSCTrSInputTag = edm::InputTag();

bool L1MuDTTFConfig::m_debug = false;
int L1MuDTTFConfig::m_dbgLevel = -1;
bool L1MuDTTFConfig::m_overlap = true;
int L1MuDTTFConfig::m_BxMin = -9;
int L1MuDTTFConfig::m_BxMax = 7;
int L1MuDTTFConfig::m_extTSFilter = 1;
bool L1MuDTTFConfig::m_openLUTs = false;
bool L1MuDTTFConfig::m_useEX21 = false;
bool L1MuDTTFConfig::m_etaTF = true;
bool L1MuDTTFConfig::m_etacanc = false;
bool L1MuDTTFConfig::m_TSOutOfTimeFilter = false;
int L1MuDTTFConfig::m_TSOutOfTimeWindow = 1;
int L1MuDTTFConfig::m_NbitsExtPhi = 8;
int L1MuDTTFConfig::m_NbitsExtPhib = 8;
int L1MuDTTFConfig::m_NbitsPtaPhi = 12;
int L1MuDTTFConfig::m_NbitsPtaPhib = 10;
int L1MuDTTFConfig::m_NbitsPhiPhi = 10;
int L1MuDTTFConfig::m_NbitsPhiPhib = 10;
std::atomic<bool> L1MuDTTFConfig::m_debug{false};
std::atomic<int> L1MuDTTFConfig::m_dbgLevel{-1};
std::atomic<int> L1MuDTTFConfig::s_BxMin{-9};
std::atomic<int> L1MuDTTFConfig::s_BxMax{-7};
Loading

0 comments on commit af1c16b

Please sign in to comment.