CMS 3D CMS Logo

Public Member Functions | Protected Member Functions | Private Member Functions | Private Attributes | Friends

DTLocalTriggerBaseTask Class Reference

#include <DTLocalTriggerBaseTask.h>

Inheritance diagram for DTLocalTriggerBaseTask:
edm::EDAnalyzer

List of all members.

Public Member Functions

 DTLocalTriggerBaseTask (const edm::ParameterSet &ps)
 Constructor.
virtual ~DTLocalTriggerBaseTask ()
 Destructor.

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze.
void beginJob ()
void beginLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &context)
 To reset the MEs.
void beginRun (const edm::Run &, const edm::EventSetup &)
 Beginrun.
void endJob (void)
 EndJob.
void endLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &context)
 Perform trend plot operations.

Private Member Functions

void bookHistos (const DTChamberId &chamb)
 Book the histograms.
void bookHistos (int wh)
 Book the histograms.
void runDCCAnalysis (std::vector< L1MuDTChambPhDigi > *phTrigs, std::vector< L1MuDTChambThDigi > *thTrigs)
 Run analysis on DCC data.
void runDDUAnalysis (edm::Handle< DTLocalTriggerCollection > &trigsDDU)
 Run analysis on ROS data.
void runDDUvsDCCAnalysis ()
 Run analysis on ROS data.
void setQLabels (MonitorElement *me, short int iaxis)
 Set Quality labels.
std::string & topFolder (std::string type)
 Get the Top folder (different between Physics and TP and DCC/DDU)

Private Attributes

std::string baseFolder [2]
int bestAccRange
std::map< uint32_t, std::map
< std::string, MonitorElement * > > 
chamberHistos
bool detailedAnalysis
MonitorElementnEventMonitor
int nEvents
int nEventsInLS
int nLumis
bool processDCC
bool processDDU
int targetBXDCC
int targetBXDDU
std::map< uint32_t,
DTTPGCompareUnit
theCompMap
DQMStoretheDQMStore
edm::ParameterSet theParams
DTTrigGeomUtilstheTrigGeomUtils
std::vector< std::string > theTypes
bool tpMode
std::map< uint32_t,
DTTimeEvolutionHisto * > 
trendHistos
std::map< int, std::map
< std::string, MonitorElement * > > 
wheelHistos

Friends

class DTMonitorModule

Detailed Description

Definition at line 43 of file DTLocalTriggerBaseTask.h.


Constructor & Destructor Documentation

DTLocalTriggerBaseTask::DTLocalTriggerBaseTask ( const edm::ParameterSet ps)

Constructor.

Definition at line 67 of file DTLocalTriggerBaseTask.cc.

References bestAccRange, detailedAnalysis, edm::ParameterSet::getUntrackedParameter(), LogTrace, cmsCodeRules::cppFunctionSkipper::operator, processDCC, processDDU, targetBXDCC, targetBXDDU, theDQMStore, theParams, theTypes, topFolder(), and tpMode.

                                                                        : 
  nEvents(0), nLumis(0), theTrigGeomUtils(0) {
  
  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
    << "[DTLocalTriggerBaseTask]: Constructor"<<endl;

  tpMode           = ps.getUntrackedParameter<bool>("testPulseMode");
  detailedAnalysis = ps.getUntrackedParameter<bool>("detailedAnalysis");

  targetBXDCC  = ps.getUntrackedParameter<int>("targetBXDCC");
  targetBXDDU  = ps.getUntrackedParameter<int>("targetBXDDU");
  bestAccRange = ps.getUntrackedParameter<int>("bestTrigAccRange");

  processDCC   = ps.getUntrackedParameter<bool>("processDCC");
  processDDU   = ps.getUntrackedParameter<bool>("processDDU");

  if (processDCC) theTypes.push_back("DCC");
  if (processDDU) theTypes.push_back("DDU");

  if (tpMode) {
    topFolder("DCC") = "DT/11-LocalTriggerTP-DCC/";
    topFolder("DDU") = "DT/12-LocalTriggerTP-DDU/";
  } else {
    topFolder("DCC") = "DT/03-LocalTrigger-DCC/";
    topFolder("DDU") = "DT/04-LocalTrigger-DDU/";
  }

  theParams = ps; 
  theDQMStore = edm::Service<DQMStore>().operator->();

}
DTLocalTriggerBaseTask::~DTLocalTriggerBaseTask ( ) [virtual]

Destructor.

Definition at line 100 of file DTLocalTriggerBaseTask.cc.

References LogTrace, nEvents, and theTrigGeomUtils.

                                                {

  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
    << "[DTLocalTriggerBaseTask]: analyzed " << nEvents << " events" << endl;
  if (theTrigGeomUtils) { delete theTrigGeomUtils; }

}

Member Function Documentation

void DTLocalTriggerBaseTask::analyze ( const edm::Event e,
const edm::EventSetup c 
) [protected, virtual]

Analyze.

Implements edm::EDAnalyzer.

Definition at line 188 of file DTLocalTriggerBaseTask.cc.

References MonitorElement::Fill(), edm::Event::getByLabel(), edm::ParameterSet::getUntrackedParameter(), edm::HandleBase::isValid(), nEventMonitor, nEvents, nEventsInLS, processDCC, processDDU, runDCCAnalysis(), runDDUAnalysis(), runDDUvsDCCAnalysis(), theCompMap, and theParams.

                                                                             {
  
  nEvents++;
  nEventsInLS++;
  nEventMonitor->Fill(nEvents);

  theCompMap.clear();

  Handle<L1MuDTChambPhContainer> phiTrigsDCC;
  Handle<L1MuDTChambThContainer> thetaTrigsDCC;
  Handle<DTLocalTriggerCollection> trigsDDU;

  if (processDCC) {
    InputTag inputTagDCC = theParams.getUntrackedParameter<InputTag>("inputTagDCC");

    e.getByLabel(inputTagDCC,phiTrigsDCC);
    e.getByLabel(inputTagDCC,thetaTrigsDCC);

    if (phiTrigsDCC.isValid() && thetaTrigsDCC.isValid()) {
      runDCCAnalysis(phiTrigsDCC->getContainer(),thetaTrigsDCC->getContainer());
    } else {
      LogVerbatim("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
        << "[DTLocalTriggerBaseTask]: one or more DCC handles for Input Tag " 
        << inputTagDCC <<" not found!" << endl;
      return;
    }
  }

  if (processDDU) {
    InputTag inputTagDDU = theParams.getUntrackedParameter<InputTag>("inputTagDDU");
    e.getByLabel(inputTagDDU,trigsDDU);

    if (trigsDDU.isValid()) {
      runDDUAnalysis(trigsDDU);
    } else {
      LogVerbatim("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
        << "[DTLocalTriggerBaseTask]: one or more DDU handles for Input Tag " 
        << inputTagDDU <<" not found!" << endl;
      return;
    }
  }
  
  if (processDCC && processDDU)
    runDDUvsDCCAnalysis();

}
void DTLocalTriggerBaseTask::beginJob ( void  ) [protected, virtual]

Reimplemented from edm::EDAnalyzer.

Definition at line 109 of file DTLocalTriggerBaseTask.cc.

References LogTrace.

                                      {
 
  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
    << "[DTLocalTriggerBaseTask]: BeginJob" << endl;

}
void DTLocalTriggerBaseTask::beginLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup context 
) [protected, virtual]

To reset the MEs.

Reimplemented from edm::EDAnalyzer.

Definition at line 140 of file DTLocalTriggerBaseTask.cc.

References chamberHistos, edm::ParameterSet::getUntrackedParameter(), LogTrace, nEventsInLS, nLumis, and theParams.

                                                                                                           {

  nEventsInLS=0;
  nLumis++;
  int resetCycle = theParams.getUntrackedParameter<int>("ResetCycle"); 

  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
    << "[DTLocalTriggerBaseTask]: Begin of LS transition" << endl;
  
  if( nLumis%resetCycle == 0 ) {
    map<uint32_t,map<string,MonitorElement*> >::const_iterator chambIt  = chamberHistos.begin();
    map<uint32_t,map<string,MonitorElement*> >::const_iterator chambEnd = chamberHistos.end();
    for(;chambIt!=chambEnd;++chambIt) {
      map<string,MonitorElement*>::const_iterator histoIt  = chambIt->second.begin();
      map<string,MonitorElement*>::const_iterator histoEnd = chambIt->second.end();
      for(;histoIt!=histoEnd;++histoIt) {
        histoIt->second->Reset();
      }
    }
  }
  
}
void DTLocalTriggerBaseTask::beginRun ( const edm::Run run,
const edm::EventSetup context 
) [protected, virtual]

Beginrun.

Reimplemented from edm::EDAnalyzer.

Definition at line 117 of file DTLocalTriggerBaseTask.cc.

References DQMStore::bookFloat(), bookHistos(), DTChamberId, edm::EventSetup::get(), LogTrace, nEventMonitor, DQMStore::setCurrentFolder(), testRegression::stat, theDQMStore, and theTrigGeomUtils.

                                                                                     {

  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
    << "[DTLocalTriggerBaseTask]: BeginRun" << endl;   

  ESHandle<DTGeometry> theGeom;  
  context.get<MuonGeometryRecord>().get(theGeom);
  theTrigGeomUtils = new DTTrigGeomUtils(theGeom);

  theDQMStore->setCurrentFolder("DT/EventInfo/Counters");
  nEventMonitor = theDQMStore->bookFloat("nProcessedEventsTrigger");
  for (int wh=-2;wh<3;++wh){
    for (int stat=1;stat<5;++stat){
      for (int sect=1;sect<13;++sect){
        bookHistos(DTChamberId(wh,stat,sect));
      }
    }
    bookHistos(wh);
  }

}
void DTLocalTriggerBaseTask::bookHistos ( const DTChamberId chamb) [private]

Book the histograms.

Definition at line 236 of file DTLocalTriggerBaseTask.cc.

References DQMStore::book1D(), DQMStore::book2D(), chamberHistos, detailedAnalysis, edm::ParameterSet::getUntrackedParameter(), LogTrace, DTTrigGeomUtils::phiRange(), processDCC, processDDU, DetId::rawId(), DTChamberId::sector(), DQMStore::setCurrentFolder(), setQLabels(), relativeConstraints::station, DTChamberId::station(), theDQMStore, theParams, theTrigGeomUtils, theTypes, topFolder(), tpMode, trendHistos, and DTChamberId::wheel().

Referenced by beginRun().

                                                               {

  uint32_t rawId = dtCh.rawId();

  stringstream wheel; wheel << dtCh.wheel();    
  stringstream station; station << dtCh.station();      
  stringstream sector; sector << dtCh.sector(); 

  map<string,int> minBX;
  map<string,int> maxBX;

  minBX["DCC"] = theParams.getUntrackedParameter<int>("minBXDCC");
  maxBX["DCC"] = theParams.getUntrackedParameter<int>("maxBXDCC");
  minBX["DDU"] = theParams.getUntrackedParameter<int>("minBXDDU");
  maxBX["DDU"] = theParams.getUntrackedParameter<int>("maxBXDDU");

  int nTimeBins  = theParams.getUntrackedParameter<int>("nTimeBins");
  int nLSTimeBin = theParams.getUntrackedParameter<int>("nLSTimeBin");

  string chTag = "_W" + wheel.str() + "_Sec" + sector.str() + "_St" + station.str();

  vector<string>::const_iterator typeIt  = theTypes.begin();
  vector<string>::const_iterator typeEnd = theTypes.end();

  for (; typeIt!=typeEnd; ++typeIt) {

    LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
      << "[DTLocalTriggerBaseTask]: booking histos for " << topFolder((*typeIt)) << "Wheel" 
      << wheel.str() << "/Sector" << sector.str() << "/Station"<< station.str() << endl;

    // Book Phi View Related Plots
    theDQMStore->setCurrentFolder(topFolder(*typeIt) + "Wheel" + wheel.str() + "/Sector" 
                          + sector.str() + "/Station" + station.str() + "/LocalTriggerPhi");      

    string histoTag = (*typeIt) + "_BXvsQual";
    chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,"BX vs trigger quality",
       7,-0.5,6.5,(int)(maxBX[(*typeIt)]-minBX[*typeIt]+1),minBX[*typeIt]-.5,maxBX[*typeIt]+.5);
    setQLabels((chamberHistos[rawId])[histoTag],1);

    if (!tpMode) {
      histoTag = (*typeIt) + "_BestQual";
      chamberHistos[rawId][histoTag] = theDQMStore->book1D(histoTag+chTag,
                 "Trigger quality of best primitives",7,-0.5,6.5);
      setQLabels(chamberHistos[rawId][histoTag],1);

      histoTag = (*typeIt) + "_Flag1stvsQual";
      chamberHistos[dtCh.rawId()][histoTag] = theDQMStore->book2D(histoTag+chTag,
                  "1st/2nd trig flag vs quality",7,-0.5,6.5,2,-0.5,1.5);
      setQLabels(chamberHistos[rawId][histoTag],1);
    }

    if (*typeIt=="DCC") {
      float minPh, maxPh; int nBinsPh;
      theTrigGeomUtils->phiRange(dtCh,minPh,maxPh,nBinsPh);

      histoTag = (*typeIt) + "_QualvsPhirad";    
      chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,
           "Trigger quality vs local position",nBinsPh,minPh,maxPh,7,-0.5,6.5);
      setQLabels(chamberHistos[rawId][histoTag],2);

      if (detailedAnalysis && !tpMode) {
        histoTag == (*typeIt) + "_QualvsPhibend";
        chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,
              "Trigger quality vs local direction",200,-40.,40.,7,-0.5,6.5);
        setQLabels((chamberHistos[dtCh.rawId()])[histoTag],2);
      }   
    }
          
    // Book Theta View Related Plots
    theDQMStore->setCurrentFolder(topFolder(*typeIt) + "Wheel" + wheel.str() + "/Sector" 
                 + sector.str() + "/Station" + station.str() + "/LocalTriggerTheta");

    if((*typeIt)=="DCC") {
      histoTag = (*typeIt) + "_PositionvsBX";      
      chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,"Theta trigger position vs BX",
                              (int)(maxBX[(*typeIt)]-minBX[*typeIt]+1),minBX[*typeIt]-.5,maxBX[*typeIt]+.5,7,-0.5,6.5);
    } else {
      histoTag = (*typeIt) + "_ThetaBXvsQual";      
      chamberHistos[rawId][histoTag] =  theDQMStore->book2D(histoTag+chTag,"BX vs trigger quality",7,-0.5,6.5,
                                           (int)(maxBX[(*typeIt)]-minBX[*typeIt]+1),minBX[*typeIt]-.5,maxBX[*typeIt]+.5);
      setQLabels((chamberHistos[dtCh.rawId()])[histoTag],1);

      histoTag = (*typeIt) + "_ThetaBestQual";      
      chamberHistos[rawId][histoTag] = theDQMStore->book1D(histoTag+chTag,
      "Trigger quality of best primitives (theta)",7,-0.5,6.5);
      setQLabels((chamberHistos[dtCh.rawId()])[histoTag],1);
    }

  }

  if (processDCC && processDDU) {
    // Book DCC/DDU Comparison Plots
    theDQMStore->setCurrentFolder(topFolder("DDU") + "Wheel" + wheel.str() + "/Sector" 
                       + sector.str() + "/Station" + station.str() + "/LocalTriggerPhi");      

    string histoTag = "COM_QualDDUvsQualDCC";
    chamberHistos[rawId][histoTag] = theDQMStore->book2D(histoTag+chTag,
                        "DDU quality vs DCC quality",8,-1.5,6.5,8,-1.5,6.5);
    setQLabels((chamberHistos[rawId])[histoTag],1);
    setQLabels((chamberHistos[rawId])[histoTag],2);

    histoTag = "COM_MatchingTrend";
    trendHistos[rawId] = new DTTimeEvolutionHisto(&(*theDQMStore),histoTag+chTag,
                                                  "Fraction of DDU-DCC matches w.r.t. proc evts",
                                                  nTimeBins,nLSTimeBin,true,0);
  }      

}
void DTLocalTriggerBaseTask::bookHistos ( int  wh) [private]

Book the histograms.

Definition at line 345 of file DTLocalTriggerBaseTask.cc.

References DQMStore::bookProfile2D(), LogTrace, MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), theDQMStore, topFolder(), and wheelHistos.

                                              {
  
  stringstream wheel; wheel << wh;      
  theDQMStore->setCurrentFolder(topFolder("DDU") + "Wheel" + wheel.str() + "/");
  string whTag = "_W" + wheel.str();
    
  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
    << "[DTLocalTriggerBaseTask]: booking wheel histos for " 
    << topFolder("DDU") << "Wheel" << wh << endl;
  
  string histoTag = "COM_BXDiff";
  MonitorElement *me = theDQMStore->bookProfile2D(histoTag+whTag,
        "DDU-DCC BX Difference",12,1,13,4,1,5,0.,20.);
  me->setAxisTitle("Sector",1);
  me->setAxisTitle("station",2);
  wheelHistos[wh][histoTag] = me;
  
}
void DTLocalTriggerBaseTask::endJob ( void  ) [protected, virtual]

EndJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 177 of file DTLocalTriggerBaseTask.cc.

References nEvents, processDCC, processDDU, DQMStore::rmdir(), theDQMStore, and topFolder().

                                    {

  LogVerbatim("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
    << "[DTLocalTriggerBaseTask]: analyzed " << nEvents << " events" << endl;

  if (processDCC) theDQMStore->rmdir(topFolder("DCC"));
  if (processDDU) theDQMStore->rmdir(topFolder("DDU"));

}
void DTLocalTriggerBaseTask::endLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup context 
) [protected, virtual]

Perform trend plot operations.

Reimplemented from edm::EDAnalyzer.

Definition at line 163 of file DTLocalTriggerBaseTask.cc.

References LogTrace, edm::LuminosityBlockBase::luminosityBlock(), nEventsInLS, and trendHistos.

                                                                                                         {

  LogTrace("DTDQM|DTMonitorModule|DTLocalTriggerBaseTask") 
    << "[DTLocalTriggerBaseTask]: End of LS transition" << endl;
  
  map<uint32_t,DTTimeEvolutionHisto* >::const_iterator chambIt  = trendHistos.begin();
  map<uint32_t,DTTimeEvolutionHisto* >::const_iterator chambEnd = trendHistos.end();
  for(;chambIt!=chambEnd;++chambIt) {
    chambIt->second->updateTimeSlot(lumiSeg.luminosityBlock(), nEventsInLS);
  }
  
}
void DTLocalTriggerBaseTask::runDCCAnalysis ( std::vector< L1MuDTChambPhDigi > *  phTrigs,
std::vector< L1MuDTChambThDigi > *  thTrigs 
) [private]

Run analysis on DCC data.

Definition at line 365 of file DTLocalTriggerBaseTask.cc.

References abs, bestAccRange, chamberHistos, detailedAnalysis, dir, pos, DetId::rawId(), targetBXDCC, theCompMap, theTrigGeomUtils, tpMode, DTTrigGeomUtils::trigDir(), and DTTrigGeomUtils::trigPos().

Referenced by analyze().

                                                                                {

  vector<L1MuDTChambPhDigi>::const_iterator iph  = phTrigs->begin();
  vector<L1MuDTChambPhDigi>::const_iterator iphe = phTrigs->end();

  for(; iph !=iphe ; ++iph) {

    int wh    = iph->whNum();
    int sec   = iph->scNum() + 1; // DTTF->DT Convention
    int st    = iph->stNum();
    int qual  = iph->code();
    int is1st = iph->Ts2Tag() ? 1 : 0;
    int bx    = iph->bxNum() - is1st;

    if (qual <0 || qual>6) continue; // Check that quality is in a valid range

    DTChamberId dtChId(wh,st,sec);
    uint32_t rawId = dtChId.rawId();
      
    float pos = theTrigGeomUtils->trigPos(&(*iph));
    float dir = theTrigGeomUtils->trigDir(&(*iph));

    if (abs(bx-targetBXDCC)<= bestAccRange &&
        theCompMap[rawId].qualDCC() <= qual) 
      theCompMap[rawId].setDCC(qual,bx);
    
    map<string, MonitorElement*> &innerME = chamberHistos[rawId];
    if (tpMode) {
      innerME["DCC_BXvsQual"]->Fill(qual,bx);      // SM BX vs Qual Phi view (1st tracks) 
      innerME["DCC_QualvsPhirad"]->Fill(pos,qual); // SM Qual vs radial angle Phi view
    } else {
      innerME["DCC_BXvsQual"]->Fill(qual,bx);         // SM BX vs Qual Phi view (1st tracks) 
      innerME["DCC_Flag1stvsQual"]->Fill(qual,is1st); // SM Qual 1st/2nd track flag Phi view
      if (!is1st) innerME["DCC_QualvsPhirad"]->Fill(pos,qual);  // SM Qual vs radial angle Phi view ONLY for 1st tracks
      if (detailedAnalysis) {
        innerME["DCC_QualvsPhibend"]->Fill(dir,qual); // SM Qual vs bending Phi view
      }
    }
    
  } 

  vector<L1MuDTChambThDigi>::const_iterator ith  = thTrigs->begin();
  vector<L1MuDTChambThDigi>::const_iterator ithe = thTrigs->end();

  for(; ith != ithe; ++ith) {
    int wh  = ith->whNum();
    int sec = ith->scNum() + 1; // DTTF -> DT Convention
    int st  = ith->stNum();
    int bx  = ith->bxNum();
      
    int thcode[7];
    
    for (int pos=0; pos<7; pos++)
      thcode[pos] = ith->code(pos);    
      
    DTChamberId dtChId(wh,st,sec);
    uint32_t rawId = dtChId.rawId();   

    map<string, MonitorElement*> &innerME = chamberHistos[rawId];

    for (int pos=0; pos<7; pos++)
      if (thcode[pos])
        innerME["DCC_PositionvsBX"]->Fill(bx,pos); // SM BX vs Position Theta view

  }
  
  // Fill Quality plots with best DCC triggers (phi view)
  if (!tpMode) {
    map<uint32_t,DTTPGCompareUnit>::const_iterator compIt  = theCompMap.begin();
    map<uint32_t,DTTPGCompareUnit>::const_iterator compEnd = theCompMap.end();
    for (; compIt!=compEnd; ++compIt) {
      int bestQual = compIt->second.qualDCC();
      if (bestQual > -1) 
        chamberHistos[compIt->first]["DCC_BestQual"]->Fill(bestQual);  // SM Best Qual Trigger Phi view
    }
  }

}
void DTLocalTriggerBaseTask::runDDUAnalysis ( edm::Handle< DTLocalTriggerCollection > &  trigsDDU) [private]

Run analysis on ROS data.

Definition at line 446 of file DTLocalTriggerBaseTask.cc.

References abs, bestAccRange, chamberHistos, DetId::rawId(), targetBXDDU, theCompMap, and tpMode.

Referenced by analyze().

                                                                                     {
    
  DTLocalTriggerCollection::DigiRangeIterator detUnitIt  = trigsDDU->begin();
  DTLocalTriggerCollection::DigiRangeIterator detUnitEnd = trigsDDU->end();

  for (; detUnitIt!=detUnitEnd; ++detUnitIt){
      
    const DTChamberId& chId = (*detUnitIt).first;
    uint32_t rawId = chId.rawId();

    const DTLocalTriggerCollection::Range& range = (*detUnitIt).second;
    DTLocalTriggerCollection::const_iterator trigIt = range.first;
    map<string, MonitorElement*> &innerME = chamberHistos[rawId];

    int bestQualTheta = -1;

    for (; trigIt!=range.second; ++trigIt){
        
      int qualPhi   = trigIt->quality();
      int qualTheta = trigIt->trTheta();
      int flag1st   = trigIt->secondTrack() ? 1 : 0;
      int bx = trigIt->bx();
      int bxPhi = bx - flag1st; // phi BX assign is different for 1st & 2nd tracks
      
      if( qualPhi>-1 && qualPhi<7 ) { // it is a phi trigger
        if (abs(bx-targetBXDDU) <= bestAccRange &&
            theCompMap[rawId].qualDDU()<= qualPhi)
          theCompMap[rawId].setDDU(qualPhi,bxPhi);
        if(tpMode) {      
          innerME["DDU_BXvsQual"]->Fill(qualPhi,bxPhi); // SM BX vs Qual Phi view       
        } else {
          innerME["DDU_BXvsQual"]->Fill(qualPhi,bxPhi); // SM BX vs Qual Phi view       
          innerME["DDU_Flag1stvsQual"]->Fill(qualPhi,flag1st); // SM Quality vs 1st/2nd track flag Phi view
        }
      }

      if( qualTheta>0 && !tpMode ){// it is a theta trigger & is not TP
        if (qualTheta > bestQualTheta){
          bestQualTheta = qualTheta;
        }
        innerME["DDU_ThetaBXvsQual"]->Fill(qualTheta,bx); // SM BX vs Qual Theta view
      }
    }
    
    // Fill Quality plots with best ddu triggers
    if (!tpMode && theCompMap.find(rawId)!= theCompMap.end()) {
      int bestQualPhi = theCompMap[rawId].qualDDU();
      if (bestQualPhi>-1)
        innerME["DDU_BestQual"]->Fill(bestQualPhi); // SM Best Qual Trigger Phi view
      if(bestQualTheta>0) {
        innerME["DDU_ThetaBestQual"]->Fill(bestQualTheta); // SM Best Qual Trigger Theta view
      }  
    }
  }
  
}
void DTLocalTriggerBaseTask::runDDUvsDCCAnalysis ( ) [private]

Run analysis on ROS data.

Definition at line 504 of file DTLocalTriggerBaseTask.cc.

References chamberHistos, DTTPGCompareUnit::deltaBX(), DTTPGCompareUnit::hasBoth(), DTTPGCompareUnit::hasOne(), DTTPGCompareUnit::hasSameQual(), DTTPGCompareUnit::qualDCC(), DTTPGCompareUnit::qualDDU(), DTChamberId::sector(), DTChamberId::station(), theCompMap, trendHistos, DTChamberId::wheel(), and wheelHistos.

Referenced by analyze().

                                                {

  map<uint32_t,DTTPGCompareUnit>::const_iterator compIt  = theCompMap.begin();
  map<uint32_t,DTTPGCompareUnit>::const_iterator compEnd = theCompMap.end();

  for (; compIt!=compEnd; ++compIt) {

    uint32_t rawId = compIt->first;
    DTChamberId chId(rawId);
    map<string, MonitorElement*> &innerME = chamberHistos[rawId];

    const DTTPGCompareUnit & compUnit = compIt->second;   
    if ( compUnit.hasOne() ){
      innerME["COM_QualDDUvsQualDCC"]->Fill(compUnit.qualDCC(),compUnit.qualDDU());
    }
    if ( compUnit.hasBoth() ){
      wheelHistos[chId.wheel()]["COM_BXDiff"]->Fill(chId.sector(),chId.station(),compUnit.deltaBX());
      if (  compUnit.hasSameQual() ) {
        trendHistos[rawId]->accumulateValueTimeSlot(1);
      }
    }
  }

}
void DTLocalTriggerBaseTask::setQLabels ( MonitorElement me,
short int  iaxis 
) [private]

Set Quality labels.

Definition at line 530 of file DTLocalTriggerBaseTask.cc.

References MonitorElement::getTH1(), timingPdfMaker::histo, i, and reco_calib_source_client_cfg::labels.

Referenced by bookHistos().

                                                                          {

  TH1* histo = me->getTH1();
  if (!histo) return;
  
  TAxis* axis=0;
  if (iaxis==1) {
    axis=histo->GetXaxis();
  }
  else if(iaxis==2) {
    axis=histo->GetYaxis();
  }
  if (!axis) return;

  string labels[7] = {"LI","LO","HI","HO","LL","HL","HH"};
  int istart = axis->GetXmin()<-1 ? 2 : 1;
  for (int i=0;i<7;i++) {
    axis->SetBinLabel(i+istart,labels[i].c_str());
  }

}
std::string& DTLocalTriggerBaseTask::topFolder ( std::string  type) [inline, private]

Get the Top folder (different between Physics and TP and DCC/DDU)

Definition at line 87 of file DTLocalTriggerBaseTask.h.

References baseFolder.

Referenced by bookHistos(), DTLocalTriggerBaseTask(), and endJob().

{ return baseFolder[type == "DCC"]; }

Friends And Related Function Documentation

friend class DTMonitorModule [friend]

Definition at line 45 of file DTLocalTriggerBaseTask.h.


Member Data Documentation

std::string DTLocalTriggerBaseTask::baseFolder[2] [private]

Definition at line 102 of file DTLocalTriggerBaseTask.h.

Referenced by topFolder().

std::map<uint32_t,std::map<std::string,MonitorElement*> > DTLocalTriggerBaseTask::chamberHistos [private]

Definition at line 104 of file DTLocalTriggerBaseTask.h.

Referenced by bookHistos(), DTLocalTriggerBaseTask(), and runDCCAnalysis().

Definition at line 121 of file DTLocalTriggerBaseTask.h.

Referenced by analyze(), and beginRun().

Definition at line 98 of file DTLocalTriggerBaseTask.h.

Referenced by analyze(), endJob(), and ~DTLocalTriggerBaseTask().

Definition at line 99 of file DTLocalTriggerBaseTask.h.

Referenced by analyze(), beginLuminosityBlock(), and endLuminosityBlock().

Definition at line 100 of file DTLocalTriggerBaseTask.h.

Referenced by beginLuminosityBlock().

Definition at line 105 of file DTLocalTriggerBaseTask.h.

Referenced by analyze(), bookHistos(), DTLocalTriggerBaseTask(), and endJob().

Definition at line 106 of file DTLocalTriggerBaseTask.h.

Referenced by analyze(), bookHistos(), DTLocalTriggerBaseTask(), and endJob().

Definition at line 109 of file DTLocalTriggerBaseTask.h.

Referenced by DTLocalTriggerBaseTask(), and runDCCAnalysis().

Definition at line 108 of file DTLocalTriggerBaseTask.h.

Referenced by DTLocalTriggerBaseTask(), and runDDUAnalysis().

Definition at line 112 of file DTLocalTriggerBaseTask.h.

Referenced by beginRun(), bookHistos(), DTLocalTriggerBaseTask(), and endJob().

std::vector<std::string> DTLocalTriggerBaseTask::theTypes [private]

Definition at line 115 of file DTLocalTriggerBaseTask.h.

Referenced by bookHistos(), and DTLocalTriggerBaseTask().

Definition at line 120 of file DTLocalTriggerBaseTask.h.

Referenced by bookHistos(), endLuminosityBlock(), and runDDUvsDCCAnalysis().

std::map<int,std::map<std::string,MonitorElement*> > DTLocalTriggerBaseTask::wheelHistos [private]

Definition at line 118 of file DTLocalTriggerBaseTask.h.

Referenced by bookHistos(), and runDDUvsDCCAnalysis().