Skip to content

Commit

Permalink
Merge pull request #18682 from Dr15Jones/removeLastThreadUnsafeDQMEDA…
Browse files Browse the repository at this point in the history
…nalyzer

Make L1MuDTTFConfig thread safe
  • Loading branch information
cmsbuild committed May 17, 2017
2 parents e277a0f + af1c16b commit e0880d8
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
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
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
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
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
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
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
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
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
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
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
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};

0 comments on commit e0880d8

Please sign in to comment.