CMS 3D CMS Logo

Public Member Functions | Static Public Attributes | Protected Member Functions | Private Types | Private Member Functions | Private Attributes

EETriggerTowerTask Class Reference

#include <EETriggerTowerTask.h>

Inheritance diagram for EETriggerTowerTask:
edm::EDAnalyzer

List of all members.

Public Member Functions

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

Static Public Attributes

static const int nSM = 18
 number of supermodules
static const int nTTEta = 20
 number of trigger towers in eta
static const int nTTPhi = 20
 number of trigger towers in phi

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze.
void beginJob (void)
 BeginJob.
void beginRun (const edm::Run &r, const edm::EventSetup &c)
 BeginRun.
void cleanup (void)
 Cleanup.
void endJob (void)
 EndJob.
void endRun (const edm::Run &r, const edm::EventSetup &c)
 EndRun.
void reset (void)
 Reset.
void setup (void)
 Setup.

Private Types

typedef std::vector
< MonitorElement * > 
array1
 1D array

Private Member Functions

void processDigis (const edm::Event &e, const edm::Handle< EcalTrigPrimDigiCollection > &digis, array1 &meEtMap, array1 &meVeto, const edm::Handle< EcalTrigPrimDigiCollection > &compDigis=edm::Handle< EcalTrigPrimDigiCollection >(), const edm::Handle< edm::TriggerResults > &hltResults=edm::Handle< edm::TriggerResults >())
 process a collection of digis, either real or emulated
void reserveArray (array1 &array)
 reserve an array to hold one histogram per supermodule
void setup (const char *nameext, const char *folder, bool emulated)
 book monitor elements for real, or emulated digis

Private Attributes

DQMStoredqmStore_
 DQM back-end interface.
edm::InputTag EEDigiCollection_
 to find the input collection of crystal digis
edm::InputTag emulCollection_
 to find the input collection of emulated digis
bool enableCleanup_
 remove MEs
std::string HLTCaloHLTBit_
std::string HLTMuonHLTBit_
edm::InputTag HLTResultsCollection_
 to find the input collection of HLT bits
int ievt_
 local event counter
bool init_
 init flag
array1 meEmulError_
array1 meEmulMatch_
MonitorElementmeEmulMatchIndex1D_ [2]
 1D emulator match 1D
MonitorElementmeEmulMatchMaxIndex1D_ [2]
MonitorElementmeEtBxReal_ [2]
 number and ET average of TP vs bx for the whole EE+/-
array1 meEtMapEmul_
 Emulated Et vs ix vs iy, for each SM.
array1 meEtMapReal_
 Et vs ix vs iy, for each SM.
MonitorElementmeEtSpectrumEmul_ [2]
MonitorElementmeEtSpectrumEmulMax_ [2]
MonitorElementmeEtSpectrumReal_ [2]
 ET spectrums for the whole EE+/-.
MonitorElementmeOccupancyBxReal_ [2]
bool mergeRuns_
 merge MEs across runs
MonitorElementmeTCCTimingCalo_ [2]
 TCC timing.
MonitorElementmeTCCTimingMuon_ [2]
array1 meVetoEmul_
 Emulated fine grain veto vs ix vs iy, for each SM.
array1 meVetoEmulError_
array1 meVetoReal_
 fine grain veto vs ix vs iy, for each SM
std::string outputFile_
 debug output root file. if empty, no output file created.
std::string prefixME_
 path to MEs
edm::InputTag realCollection_
 to find the input collection of real digis

Detailed Description

Definition at line 23 of file EETriggerTowerTask.h.


Member Typedef Documentation

typedef std::vector<MonitorElement*> EETriggerTowerTask::array1 [private]

1D array

Definition at line 72 of file EETriggerTowerTask.h.


Constructor & Destructor Documentation

EETriggerTowerTask::EETriggerTowerTask ( const edm::ParameterSet ps)

Constructor.

Definition at line 32 of file EETriggerTowerTask.cc.

References dqmStore_, EEDigiCollection_, emulCollection_, enableCleanup_, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), HLTCaloHLTBit_, HLTMuonHLTBit_, HLTResultsCollection_, init_, LogDebug, meEmulError_, meEmulMatch_, meEmulMatchIndex1D_, meEmulMatchMaxIndex1D_, meEtBxReal_, meEtMapEmul_, meEtMapReal_, meEtSpectrumEmul_, meEtSpectrumEmulMax_, meEtSpectrumReal_, meOccupancyBxReal_, mergeRuns_, meTCCTimingCalo_, meTCCTimingMuon_, meVetoEmul_, meVetoEmulError_, meVetoReal_, cmsCodeRules::cppFunctionSkipper::operator, outputFile_, prefixME_, realCollection_, and reserveArray().

                                                                {

  init_ = false;

  dqmStore_ = edm::Service<DQMStore>().operator->();

  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");

  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns", false);

  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup", false);

  meEtSpectrumReal_[0] = 0;
  meEtSpectrumReal_[1] = 0;
  meEtSpectrumEmul_[0] = 0;
  meEtSpectrumEmul_[1] = 0;
  meEtSpectrumEmulMax_[0] = 0;
  meEtSpectrumEmulMax_[1] = 0;
  meEtBxReal_[0] = 0;
  meEtBxReal_[1] = 0;
  meOccupancyBxReal_[0] = 0;
  meOccupancyBxReal_[1] = 0;
  meTCCTimingCalo_[0] = 0;
  meTCCTimingCalo_[1] = 0;
  meTCCTimingMuon_[0] = 0;
  meTCCTimingMuon_[1] = 0;
  meEmulMatchIndex1D_[0] = 0;
  meEmulMatchIndex1D_[1] = 0;
  meEmulMatchMaxIndex1D_[0] = 0;
  meEmulMatchMaxIndex1D_[1] = 0;

  reserveArray(meEtMapReal_);
  reserveArray(meVetoReal_);
  reserveArray(meEtMapEmul_);
  reserveArray(meVetoEmul_);
  reserveArray(meEmulError_);
  reserveArray(meEmulMatch_);
  reserveArray(meVetoEmulError_);

  realCollection_ =  ps.getParameter<edm::InputTag>("EcalTrigPrimDigiCollectionReal");
  emulCollection_ =  ps.getParameter<edm::InputTag>("EcalTrigPrimDigiCollectionEmul");
  EEDigiCollection_ = ps.getParameter<edm::InputTag>("EEDigiCollection");
  HLTResultsCollection_ = ps.getParameter<edm::InputTag>("HLTResultsCollection");

  HLTCaloHLTBit_ = ps.getUntrackedParameter<std::string>("HLTCaloHLTBit", "");
  HLTMuonHLTBit_ = ps.getUntrackedParameter<std::string>("HLTMuonHLTBit", "");

  outputFile_ = ps.getUntrackedParameter<std::string>("OutputRootFile", "");

  LogDebug("EETriggerTowerTask") << "REAL     digis: " << realCollection_;
  LogDebug("EETriggerTowerTask") << "EMULATED digis: " << emulCollection_;

}
EETriggerTowerTask::~EETriggerTowerTask ( ) [virtual]

Destructor.

Definition at line 86 of file EETriggerTowerTask.cc.

                                       {

}

Member Function Documentation

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

Analyze.

Implements edm::EDAnalyzer.

Definition at line 347 of file EETriggerTowerTask.cc.

References emulCollection_, edm::Event::getByLabel(), JetPDSkim_cfg::hltResults, HLTResultsCollection_, ievt_, init_, edm::InputTag::instance(), edm::InputTag::label(), LogDebug, meEtMapEmul_, meEtMapReal_, meVetoEmul_, meVetoReal_, processDigis(), realCollection_, and setup().

                                                                         {

  if ( ! init_ ) this->setup();

  ievt_++;

  edm::Handle<EcalTrigPrimDigiCollection> realDigis;

  if ( e.getByLabel(realCollection_, realDigis) ) {

    int neetpd = realDigis->size();
    LogDebug("EETriggerTowerTask") << "event " << ievt_ << " trigger primitive digi collection size: " << neetpd;

    processDigis( e,
                  realDigis,
                  meEtMapReal_,
                  meVetoReal_);

  } else {
    edm::LogWarning("EETriggerTowerTask") << realCollection_ << " not available";
  }

  edm::Handle<EcalTrigPrimDigiCollection> emulDigis;

  if ( e.getByLabel(emulCollection_, emulDigis) ) {

    edm::Handle<edm::TriggerResults> hltResults;

    if ( !e.getByLabel(HLTResultsCollection_, hltResults) ) {
      HLTResultsCollection_ = edm::InputTag(HLTResultsCollection_.label(), HLTResultsCollection_.instance(), "HLT");
    }

    if ( !e.getByLabel(HLTResultsCollection_, hltResults) ) {
      HLTResultsCollection_ = edm::InputTag(HLTResultsCollection_.label(), HLTResultsCollection_.instance(), "FU");
    }

    if ( e.getByLabel(HLTResultsCollection_, hltResults) ) {

      processDigis( e,
                    emulDigis,
                    meEtMapEmul_,
                    meVetoEmul_,
                    realDigis,
                    hltResults);

    } else {
      edm::LogWarning("EETriggerTowerTask") << HLTResultsCollection_ << " not available";
    }

  } else {
    edm::LogInfo("EETriggerTowerTask") << emulCollection_ << " not available";
  }

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

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 97 of file EETriggerTowerTask.cc.

References dqmStore_, ievt_, prefixME_, DQMStore::rmdir(), and DQMStore::setCurrentFolder().

                                     {

  ievt_ = 0;

  if ( dqmStore_ ) {
    dqmStore_->setCurrentFolder(prefixME_ + "/EETriggerTowerTask");
    dqmStore_->rmdir(prefixME_ + "/EETriggerTowerTask");
  }

}
void EETriggerTowerTask::beginRun ( const edm::Run r,
const edm::EventSetup c 
) [protected, virtual]

BeginRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 108 of file EETriggerTowerTask.cc.

References Numbers::initGeometry(), mergeRuns_, and reset().

                                                                         {

  Numbers::initGeometry(c, false);

  if ( ! mergeRuns_ ) this->reset();

}
void EETriggerTowerTask::cleanup ( void  ) [protected]

Cleanup.

Definition at line 323 of file EETriggerTowerTask.cc.

References dqmStore_, init_, outputFile_, prefixME_, DQMStore::rmdir(), and DQMStore::save().

Referenced by endJob().

                                     {

  if ( ! init_ ) return;

  if ( dqmStore_ ) {

    if ( !outputFile_.empty() ) dqmStore_->save( outputFile_.c_str() );

    dqmStore_->rmdir( prefixME_ + "/EETriggerTowerTask" );

  }

  init_ = false;

}
void EETriggerTowerTask::endJob ( void  ) [protected, virtual]

EndJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 339 of file EETriggerTowerTask.cc.

References cleanup(), enableCleanup_, and ievt_.

                                   {

  edm::LogInfo("EETriggerTowerTask") << "analyzed " << ievt_ << " events";

  if ( enableCleanup_ ) this->cleanup();

}
void EETriggerTowerTask::endRun ( const edm::Run r,
const edm::EventSetup c 
) [protected, virtual]

EndRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 116 of file EETriggerTowerTask.cc.

                                                                       {

}
void EETriggerTowerTask::processDigis ( const edm::Event e,
const edm::Handle< EcalTrigPrimDigiCollection > &  digis,
array1 meEtMap,
array1 meVeto,
const edm::Handle< EcalTrigPrimDigiCollection > &  compDigis = edm::Handle<EcalTrigPrimDigiCollection>(),
const edm::Handle< edm::TriggerResults > &  hltResults = edm::Handle<edm::TriggerResults>() 
) [private]

process a collection of digis, either real or emulated

Definition at line 403 of file EETriggerTowerTask.cc.

References accept(), edm::EventBase::bunchCrossing(), Numbers::crystals(), EcalEndcap, EEDigiCollection_, MonitorElement::Fill(), edm::Event::getByLabel(), HLTCaloHLTBit_, HLTMuonHLTBit_, i, getHLTprescales::index, Numbers::iSM(), ecalpyutils::ism(), edm::HandleBase::isValid(), Numbers::iTCC(), Numbers::iTT(), EEDetId::ix(), j, meEmulError_, meEmulMatch_, meEmulMatchIndex1D_, meEmulMatchMaxIndex1D_, meEtBxReal_, meEtSpectrumEmul_, meEtSpectrumEmulMax_, meEtSpectrumReal_, meOccupancyBxReal_, meTCCTimingCalo_, meTCCTimingMuon_, meVetoEmulError_, Numbers::subDet(), edm::TriggerNames::triggerName(), and edm::Event::triggerNames().

Referenced by analyze().

                                                                                    {

  int bx = e.bunchCrossing();
  int nTP[2];
  nTP[0] = nTP[1] = 0;

  // indexes are: readoutCrystalsInTower[TCCId][iTT]
  int readoutCrystalsInTower[108][41];
  for (int itcc = 0; itcc < 108; itcc++) {
    for (int itt = 0; itt < 41; itt++) readoutCrystalsInTower[itcc][itt] = 0;
  }

  if ( compDigis.isValid() ) {

    edm::Handle<EEDigiCollection> crystalDigis;

    if ( e.getByLabel(EEDigiCollection_, crystalDigis) ) {

      for ( EEDigiCollection::const_iterator cDigiItr = crystalDigis->begin(); cDigiItr != crystalDigis->end(); ++cDigiItr ) {

        EEDetId id = cDigiItr->id();

        int ix = id.ix();
        int iy = id.iy();
        int ism = Numbers::iSM( id );
        int itcc = Numbers::iTCC( ism, EcalEndcap, ix, iy );
        int itt = Numbers::iTT( ism, EcalEndcap, ix, iy );

        readoutCrystalsInTower[itcc-1][itt-1]++;

      }

    } else {
      edm::LogWarning("EETriggerTowerTask") << EEDigiCollection_ << " not available";
    }

  }

  bool caloTrg = false;
  bool muonTrg = false;

  if ( hltResults.isValid() ) {

    int ntrigs = hltResults->size();
    if ( ntrigs!=0 ) {

      const edm::TriggerNames & triggerNames = e.triggerNames(*hltResults);

      for ( int itrig = 0; itrig != ntrigs; ++itrig ) {
        std::string trigName = triggerNames.triggerName(itrig);
        bool accept = hltResults->accept(itrig);

        if ( trigName == HLTCaloHLTBit_ ) caloTrg = accept;

        if ( trigName == HLTMuonHLTBit_ ) muonTrg = accept;

      }

    } else {
      edm::LogWarning("EBTriggerTowerTask") << " zero size trigger names in input TriggerResults";
    }

  }

  for ( EcalTrigPrimDigiCollection::const_iterator tpdigiItr = digis->begin(); tpdigiItr != digis->end(); ++tpdigiItr ) {

    if ( Numbers::subDet( tpdigiItr->id() ) != EcalEndcap ) continue;

    int ismt = Numbers::iSM( tpdigiItr->id() );
    int itt = Numbers::iTT( tpdigiItr->id() );
    int itcc = Numbers::iTCC( tpdigiItr->id() );

    std::vector<DetId>* crystals = Numbers::crystals( tpdigiItr->id() );

    float xvalEt = tpdigiItr->compressedEt();
    float xvalVeto = 0.5 + tpdigiItr->fineGrain();

    bool good = true;
    bool goodVeto = true;

    int compDigiInterest = -1;

    bool matchSample[6];
    for (int j=0; j<6; j++) matchSample[j]=false;

    if ( compDigis.isValid() ) {

      if ( ismt >= 1 && ismt <= 9 ) {
        if ( meEtSpectrumEmul_[0] ) meEtSpectrumEmul_[0]->Fill( xvalEt );
      } else {
        if ( meEtSpectrumEmul_[1] ) meEtSpectrumEmul_[1]->Fill( xvalEt );
      }

      float maxEt = 0;
      int maxTPIndex = -1;
      for (int j=0; j<5; j++) {
        float EtTP = (*tpdigiItr)[j].compressedEt();
        if ( EtTP > maxEt ) {
          maxEt = EtTP;
          maxTPIndex = j+1;
        }
      }

      if ( ismt >= 1 && ismt <= 9 ) {
        if ( meEtSpectrumEmulMax_[0] ) meEtSpectrumEmulMax_[0]->Fill( maxEt );
        if ( meEmulMatchMaxIndex1D_[0] && maxEt > 0 ) meEmulMatchMaxIndex1D_[0]->Fill( maxTPIndex );
      } else {
        if ( meEtSpectrumEmulMax_[1] ) meEtSpectrumEmulMax_[1]->Fill( maxEt );
        if ( meEmulMatchMaxIndex1D_[1] && maxEt > 0 ) meEmulMatchMaxIndex1D_[1]->Fill( maxTPIndex );
      }

      EcalTrigPrimDigiCollection::const_iterator compDigiItr = compDigis->find( tpdigiItr->id().rawId() );
      if ( compDigiItr != compDigis->end() ) {
        int compDigiEt = compDigiItr->compressedEt();
        compDigiInterest = (compDigiItr->ttFlag() & 0x3);

        if ( ismt >= 1 && ismt <= 9 ) {
          if ( compDigiEt > 0 ) nTP[0]++;
          if ( meEtSpectrumReal_[0] ) meEtSpectrumReal_[0]->Fill( compDigiEt );
          if ( meEtBxReal_[0] && compDigiEt > 0 ) meEtBxReal_[0]->Fill( bx, compDigiEt );
        } else {
          if ( compDigiEt > 0 ) nTP[1]++;
          if ( meEtSpectrumReal_[1] ) meEtSpectrumReal_[1]->Fill( compDigiEt );
          if ( meEtBxReal_[1] && compDigiEt > 0 ) meEtBxReal_[1]->Fill( bx, compDigiEt );
        }

        // compare the 5 TPs with different time-windows
        // sample 0 means no match, 1-5: sample of the TP that matches
        matchSample[0]=false;
        bool matchedAny=false;

        for (int j=0; j<5; j++) {
          if ((*tpdigiItr)[j].compressedEt() == compDigiEt ) {
            matchSample[j+1]=true;
            matchedAny=true;
          } else {
            matchSample[j+1]=false;
          }
        }

        if (!matchedAny) matchSample[0]=true;

        // check if the tower has been readout completely and if it is medium or high interest
        if (readoutCrystalsInTower[itcc-1][itt-1] == int(crystals->size()) &&
            (compDigiInterest == 1 || compDigiInterest == 3) && compDigiEt > 0) {

          if ( tpdigiItr->compressedEt() != compDigiEt ) {
            good = false;
          }
          if ( tpdigiItr->fineGrain() != compDigiItr->fineGrain() ) {
            goodVeto = false;
          }

          for (int j=0; j<6; j++) {
            if (matchSample[j]) {

              int index = ( j==0 ) ? -1 : j;

              if ( ismt >= 1 && ismt <= 9 ) {
                meEmulMatchIndex1D_[0]->Fill(index+0.5);
              } else {
                meEmulMatchIndex1D_[1]->Fill(index+0.5);
              }

              for ( unsigned int i=0; i<crystals->size(); i++ ) {

                EEDetId id = (*crystals)[i];

                int ix = id.ix();
                int iy = id.iy();

                if ( ismt >= 1 && ismt <= 9 ) ix = 101 - ix;

                float xix = ix-0.5;
                float xiy = iy-0.5;

                meEmulMatch_[ismt-1]->Fill(xix, xiy, j+0.5);
                if ( ismt >= 1 && ismt <= 9 ) {
                  if ( meTCCTimingCalo_[0] && caloTrg ) meTCCTimingCalo_[0]->Fill( itcc, index+0.5 );
                  if ( meTCCTimingMuon_[0] && muonTrg ) meTCCTimingMuon_[0]->Fill( itcc, index+0.5 );
                } else {
                  if ( meTCCTimingCalo_[1] && caloTrg ) meTCCTimingCalo_[1]->Fill( itcc, index+0.5 );
                  if ( meTCCTimingMuon_[1] && muonTrg ) meTCCTimingMuon_[1]->Fill( itcc, index+0.5 );
                }

              } // loop on crystals

            }
          }

        } // check readout

      } else {
        good = false;
        goodVeto = false;
      }

      for ( unsigned int i=0; i<crystals->size(); i++ ) {

        EEDetId id = (*crystals)[i];

        int ix = id.ix();
        int iy = id.iy();

        if ( ismt >= 1 && ismt <= 9 ) ix = 101 - ix;

        float xix = ix-0.5;
        float xiy = iy-0.5;

        if (!good ) {
          if ( meEmulError_[ismt-1] ) meEmulError_[ismt-1]->Fill(xix, xiy);
        }
        if (!goodVeto) {
          if ( meVetoEmulError_[ismt-1] ) meVetoEmulError_[ismt-1]->Fill(xix, xiy);
        }

      } // loop on crystals

    } // compDigis.isValid

    for ( unsigned int i=0; i<crystals->size(); i++ ) {

      EEDetId id = (*crystals)[i];

      int ix = id.ix();
      int iy = id.iy();

      if ( ismt >= 1 && ismt <= 9 ) ix = 101 - ix;

      float xix = ix-0.5;
      float xiy = iy-0.5;

      if ( meEtMap[ismt-1] ) meEtMap[ismt-1]->Fill(xix, xiy, xvalEt);
      if ( meVeto[ismt-1] ) meVeto[ismt-1]->Fill(xix, xiy, xvalVeto);

    } // loop on crystals

  } // loop on TP

  if ( meOccupancyBxReal_[0] ) meOccupancyBxReal_[0]->Fill( bx, nTP[0] );
  if ( meOccupancyBxReal_[1] ) meOccupancyBxReal_[1]->Fill( bx, nTP[1] );

}
void EETriggerTowerTask::reserveArray ( array1 array) [private]

reserve an array to hold one histogram per supermodule

Definition at line 90 of file EETriggerTowerTask.cc.

References nSM.

Referenced by EETriggerTowerTask().

                                                     {

  array.reserve( nSM );
  array.resize( nSM, static_cast<MonitorElement*>(0) );

}
void EETriggerTowerTask::reset ( void  ) [protected]

Reset.

Definition at line 120 of file EETriggerTowerTask.cc.

References i, meEmulError_, meEmulMatch_, meEmulMatchIndex1D_, meEmulMatchMaxIndex1D_, meEtBxReal_, meEtMapEmul_, meEtMapReal_, meEtSpectrumEmul_, meEtSpectrumEmulMax_, meEtSpectrumReal_, meOccupancyBxReal_, meTCCTimingCalo_, meTCCTimingMuon_, meVetoEmul_, meVetoEmulError_, meVetoReal_, and MonitorElement::Reset().

Referenced by beginRun().

                                   {

  for (int iside = 0; iside < 2; iside++) {
    if ( meEtSpectrumReal_[iside] ) meEtSpectrumReal_[iside]->Reset();
    if ( meEtSpectrumEmul_[iside] ) meEtSpectrumEmul_[iside]->Reset();
    if ( meEtSpectrumEmulMax_[iside] ) meEtSpectrumEmulMax_[iside]->Reset();
    if ( meEtBxReal_[iside] ) meEtBxReal_[iside]->Reset();
    if ( meOccupancyBxReal_[iside] ) meOccupancyBxReal_[iside]->Reset();
    if ( meTCCTimingCalo_[iside] ) meTCCTimingCalo_[iside]->Reset();
    if ( meTCCTimingMuon_[iside] ) meTCCTimingMuon_[iside]->Reset();
    if ( meEmulMatchIndex1D_[iside] ) meEmulMatchIndex1D_[iside]->Reset();
    if ( meEmulMatchMaxIndex1D_[iside] ) meEmulMatchMaxIndex1D_[iside]->Reset();
  }

  for (int i = 0; i < 18; i++) {

    if ( meEtMapReal_[i] ) meEtMapReal_[i]->Reset();
    if ( meVetoReal_[i] ) meVetoReal_[i]->Reset();
    if ( meEtMapEmul_[i] ) meEtMapEmul_[i]->Reset();
    if ( meVetoEmul_[i] ) meVetoEmul_[i]->Reset();
    if ( meEmulError_[i] ) meEmulError_[i]->Reset();
    if ( meEmulMatch_[i] ) meEmulMatch_[i]->Reset();
    if ( meVetoEmulError_[i] ) meVetoEmulError_[i]->Reset();

  }

}
void EETriggerTowerTask::setup ( void  ) [protected]

Setup.

Definition at line 148 of file EETriggerTowerTask.cc.

References dqmStore_, init_, and prefixME_.

Referenced by analyze().

                                  {

  init_ = true;

  if ( dqmStore_ ) {
    setup( "Real Digis",
           (prefixME_ + "/EETriggerTowerTask").c_str(), false );

    setup( "Emulated Digis",
           (prefixME_ + "/EETriggerTowerTask/Emulated").c_str(), true);
  }
  else {
    edm::LogError("EETriggerTowerTask") << "Bad DQMStore, cannot book MonitorElements.";
  }
}
void EETriggerTowerTask::setup ( const char *  nameext,
const char *  folder,
bool  emulated 
) [private]

book monitor elements for real, or emulated digis

Definition at line 164 of file EETriggerTowerTask.cc.

References DQMStore::book1D(), DQMStore::book2D(), DQMStore::book3D(), DQMStore::bookProfile(), DQMStore::bookProfile2D(), dqmStore_, trackerHits::histo, HLTCaloHLTBit_, HLTMuonHLTBit_, i, Numbers::ix0EE(), Numbers::iy0EE(), meEmulError_, meEmulMatch_, meEmulMatchIndex1D_, meEmulMatchMaxIndex1D_, meEtBxReal_, meEtMapEmul_, meEtMapReal_, meEtSpectrumEmul_, meEtSpectrumEmulMax_, meEtSpectrumReal_, meOccupancyBxReal_, meTCCTimingCalo_, meTCCTimingMuon_, meVetoEmul_, meVetoEmulError_, meVetoReal_, Numbers::sEE(), MonitorElement::setAxisTitle(), DQMStore::setCurrentFolder(), DQMStore::tag(), and fw3dlego::xbins.

                                                {

  array1*  meEtMap = &meEtMapReal_;
  array1*  meVeto = &meVetoReal_;

  if ( emulated ) {
    meEtMap = &meEtMapEmul_;
    meVeto = &meVetoEmul_;
  }

  dqmStore_->setCurrentFolder(folder);

  char histo[200];

  if (!emulated) {
    sprintf(histo, "EETTT Et spectrum %s EE -", nameext);
    meEtSpectrumReal_[0] = dqmStore_->book1D(histo, histo, 256, 0., 256.);
    meEtSpectrumReal_[0]->setAxisTitle("energy (ADC)", 1);

    sprintf(histo, "EETTT Et spectrum %s EE +", nameext);
    meEtSpectrumReal_[1] = dqmStore_->book1D(histo, histo, 256, 0., 256.);
    meEtSpectrumReal_[1]->setAxisTitle("energy (ADC)", 1);

    sprintf(histo, "EETTT TP matching index EE -");
    meEmulMatchIndex1D_[0] = dqmStore_->book1D(histo, histo, 7, -1., 6.);
    meEmulMatchIndex1D_[0]->setAxisTitle("TP data matching emulator", 1);

    sprintf(histo, "EETTT TP matching index EE +");
    meEmulMatchIndex1D_[1] = dqmStore_->book1D(histo, histo, 7, -1., 6.);
    meEmulMatchIndex1D_[1]->setAxisTitle("TP data matching emulator", 1);

    sprintf(histo, "EETTT max TP matching index EE -");
    meEmulMatchMaxIndex1D_[0] = dqmStore_->book1D(histo, histo, 7, -1., 6.);
    meEmulMatchMaxIndex1D_[0]->setAxisTitle("Max TP data matching emulator", 1);

    sprintf(histo, "EETTT max TP matching index EE +");
    meEmulMatchMaxIndex1D_[1] = dqmStore_->book1D(histo, histo, 7, -1., 6.);
    meEmulMatchMaxIndex1D_[1]->setAxisTitle("Max TP data matching emulator", 1);

    double xbins[51];
    for ( int i=0; i<=11; i++ ) xbins[i] = i-1;  // begin of orbit
    // abort gap in presence of calibration: [3381-3500]
    // abort gap in absence of calibration: [3444-3500]
    // using the wider abort gap always, start finer binning at bx=3371
    for ( int i=12; i<=22; i++) xbins[i] = 3371+i-12;
    // use 29 bins for the abort gap
    for ( int i=23; i<=50; i++) xbins[i] = 3382+(i-23)*6;

    sprintf(histo, "EETTT Et vs bx %s EE -", nameext);
    meEtBxReal_[0] = dqmStore_->bookProfile(histo, histo, 50, xbins, 256, 0, 256);
    meEtBxReal_[0]->setAxisTitle("bunch crossing", 1);
    meEtBxReal_[0]->setAxisTitle("energy (ADC)", 2);

    sprintf(histo, "EETTT Et vs bx %s EE +", nameext);
    meEtBxReal_[1] = dqmStore_->bookProfile(histo, histo, 50, xbins, 256, 0, 256);
    meEtBxReal_[1]->setAxisTitle("bunch crossing", 1);
    meEtBxReal_[1]->setAxisTitle("energy (ADC)", 2);

    sprintf(histo, "EETTT TP occupancy vs bx %s EE -", nameext);
    meOccupancyBxReal_[0] = dqmStore_->bookProfile(histo, histo, 50, xbins, 2448, 0, 2448);
    meOccupancyBxReal_[0]->setAxisTitle("bunch crossing", 1);
    meOccupancyBxReal_[0]->setAxisTitle("TP number", 2);

    sprintf(histo, "EETTT TP occupancy vs bx %s EE +", nameext);
    meOccupancyBxReal_[1] = dqmStore_->bookProfile(histo, histo, 50, xbins, 2448, 0, 2448);
    meOccupancyBxReal_[1]->setAxisTitle("bunch crossing", 1);
    meOccupancyBxReal_[1]->setAxisTitle("TP number", 2);

    if ( HLTCaloHLTBit_ != "" ) {
      sprintf(histo, "EETTT TCC timing calo triggers %s EE -", nameext);
      meTCCTimingCalo_[0] = dqmStore_->book2D(histo, histo, 36, 1, 37, 7, -1., 6.);
      meTCCTimingCalo_[0]->setAxisTitle("nTCC", 1);
      meTCCTimingCalo_[0]->setAxisTitle("TP data matching emulator", 2);

      sprintf(histo, "EETTT TCC timing calo triggers %s EE +", nameext);
      meTCCTimingCalo_[1] = dqmStore_->book2D(histo, histo, 36, 73, 109, 7, -1., 6.);
      meTCCTimingCalo_[1]->setAxisTitle("nTCC", 1);
      meTCCTimingCalo_[1]->setAxisTitle("TP data matching emulator", 2);
    }

    if ( HLTMuonHLTBit_ != "" ) {
      sprintf(histo, "EETTT TCC timing muon triggers %s EE -", nameext);
      meTCCTimingMuon_[0] = dqmStore_->book2D(histo, histo, 36, 1, 37, 7, -1., 6.);
      meTCCTimingMuon_[0]->setAxisTitle("nTCC", 1);
      meTCCTimingMuon_[0]->setAxisTitle("TP data matching emulator", 2);

      sprintf(histo, "EETTT TCC timing muon triggers %s EE +", nameext);
      meTCCTimingMuon_[1] = dqmStore_->book2D(histo, histo, 36, 73, 109, 7, -1., 6.);
      meTCCTimingMuon_[1]->setAxisTitle("nTCC", 1);
      meTCCTimingMuon_[1]->setAxisTitle("TP data matching emulator", 2);
    }

  } else {
    sprintf(histo, "EETTT Et spectrum %s EE -", nameext);
    meEtSpectrumEmul_[0] = dqmStore_->book1D(histo, histo, 256, 0., 256.);
    meEtSpectrumEmul_[0]->setAxisTitle("energy (ADC)", 1);

    sprintf(histo, "EETTT Et spectrum %s EE +", nameext);
    meEtSpectrumEmul_[1] = dqmStore_->book1D(histo, histo, 256, 0., 256.);
    meEtSpectrumEmul_[1]->setAxisTitle("energy (ADC)", 1);

    sprintf(histo, "EETTT Et spectrum %s max EE -", nameext);
    meEtSpectrumEmulMax_[0] = dqmStore_->book1D(histo, histo, 256, 0., 256.);
    meEtSpectrumEmulMax_[0]->setAxisTitle("energy (ADC)", 1);

    sprintf(histo, "EETTT Et spectrum %s max EE +", nameext);
    meEtSpectrumEmulMax_[1] = dqmStore_->book1D(histo, histo, 256, 0., 256.);
    meEtSpectrumEmulMax_[1]->setAxisTitle("energy (ADC)", 1);
  }

  for (int i = 0; i < 18; i++) {

    sprintf(histo, "EETTT Et map %s %s", nameext, Numbers::sEE(i+1).c_str());
    (*meEtMap)[i] = dqmStore_->bookProfile2D(histo, histo,
                                             50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50.,
                                             50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.,
                                             256, 0, 256.);
    (*meEtMap)[i]->setAxisTitle("ix", 1);
    if ( i+1 >= 1 && i+1 <= 9 ) (*meEtMap)[i]->setAxisTitle("101-ix", 1);
    (*meEtMap)[i]->setAxisTitle("iy", 2);
    dqmStore_->tag((*meEtMap)[i], i+1);

    if (!emulated) {

      sprintf(histo, "EETTT EmulError %s", Numbers::sEE(i+1).c_str());
      meEmulError_[i] = dqmStore_->book2D(histo, histo,
                                          50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50.,
                                          50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50. );
      meEmulError_[i]->setAxisTitle("ix", 1);
      if ( i+1 >= 1 && i+1 <= 9 ) meEmulError_[i]->setAxisTitle("101-ix", 1);
      meEmulError_[i]->setAxisTitle("iy", 2);
      dqmStore_->tag(meEmulError_[i], i+1);

      sprintf(histo, "EETTT EmulMatch %s", Numbers::sEE(i+1).c_str());
      meEmulMatch_[i] = dqmStore_->book3D(histo, histo,
                                          50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50.,
                                          50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.,
                                          6, 0., 6.);
      meEmulMatch_[i]->setAxisTitle("ix", 1);
      if ( i+1 >= 1 && i+1 <= 9 ) meEmulMatch_[i]->setAxisTitle("101-ix", 1);
      meEmulMatch_[i]->setAxisTitle("iy", 2);
      dqmStore_->tag(meEmulMatch_[i], i+1);

      sprintf(histo, "EETTT EmulFineGrainVetoError %s", Numbers::sEE(i+1).c_str());
      meVetoEmulError_[i] = dqmStore_->book2D(histo, histo,
                                              50, Numbers::ix0EE(i+1)+0., Numbers::ix0EE(i+1)+50.,
                                              50, Numbers::iy0EE(i+1)+0., Numbers::iy0EE(i+1)+50.);
      meVetoEmulError_[i]->setAxisTitle("ix", 1);
      if ( i+1 >= 1 && i+1 <= 9 ) meVetoEmulError_[i]->setAxisTitle("101-ix", 1);
      meVetoEmulError_[i]->setAxisTitle("iy", 2);
      dqmStore_->tag(meVetoEmulError_[i], i+1);

    }
  }

}

Member Data Documentation

DQM back-end interface.

Definition at line 120 of file EETriggerTowerTask.h.

Referenced by beginJob(), cleanup(), EETriggerTowerTask(), and setup().

to find the input collection of crystal digis

Definition at line 138 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), and processDigis().

to find the input collection of emulated digis

Definition at line 135 of file EETriggerTowerTask.h.

Referenced by analyze(), and EETriggerTowerTask().

remove MEs

Definition at line 126 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), and endJob().

std::string EETriggerTowerTask::HLTCaloHLTBit_ [private]

Definition at line 142 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), and setup().

std::string EETriggerTowerTask::HLTMuonHLTBit_ [private]

Definition at line 143 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), and setup().

to find the input collection of HLT bits

Definition at line 141 of file EETriggerTowerTask.h.

Referenced by analyze(), and EETriggerTowerTask().

local event counter

Definition at line 95 of file EETriggerTowerTask.h.

Referenced by analyze(), beginJob(), and endJob().

bool EETriggerTowerTask::init_ [private]

init flag

Definition at line 117 of file EETriggerTowerTask.h.

Referenced by analyze(), cleanup(), EETriggerTowerTask(), and setup().

error flag vs ix vs iy, for each SM the error flag is set to true in case of a discrepancy between the emulator and the real data

Definition at line 112 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

Definition at line 113 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

1D emulator match 1D

Definition at line 149 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

Definition at line 150 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

number and ET average of TP vs bx for the whole EE+/-

Definition at line 158 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

Emulated Et vs ix vs iy, for each SM.

Definition at line 104 of file EETriggerTowerTask.h.

Referenced by analyze(), EETriggerTowerTask(), reset(), and setup().

Et vs ix vs iy, for each SM.

Definition at line 98 of file EETriggerTowerTask.h.

Referenced by analyze(), EETriggerTowerTask(), reset(), and setup().

Definition at line 154 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

Definition at line 155 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

ET spectrums for the whole EE+/-.

Definition at line 153 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

Definition at line 159 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

merge MEs across runs

Definition at line 129 of file EETriggerTowerTask.h.

Referenced by beginRun(), and EETriggerTowerTask().

TCC timing.

Definition at line 162 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

Definition at line 163 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

Emulated fine grain veto vs ix vs iy, for each SM.

Definition at line 107 of file EETriggerTowerTask.h.

Referenced by analyze(), EETriggerTowerTask(), reset(), and setup().

Definition at line 114 of file EETriggerTowerTask.h.

Referenced by EETriggerTowerTask(), processDigis(), reset(), and setup().

fine grain veto vs ix vs iy, for each SM

Definition at line 101 of file EETriggerTowerTask.h.

Referenced by analyze(), EETriggerTowerTask(), reset(), and setup().

const int EETriggerTowerTask::nSM = 18 [static]

number of supermodules

Definition at line 40 of file EETriggerTowerTask.h.

Referenced by reserveArray().

const int EETriggerTowerTask::nTTEta = 20 [static]

number of trigger towers in eta

Definition at line 34 of file EETriggerTowerTask.h.

const int EETriggerTowerTask::nTTPhi = 20 [static]

number of trigger towers in phi

Definition at line 37 of file EETriggerTowerTask.h.

std::string EETriggerTowerTask::outputFile_ [private]

debug output root file. if empty, no output file created.

Definition at line 146 of file EETriggerTowerTask.h.

Referenced by cleanup(), and EETriggerTowerTask().

std::string EETriggerTowerTask::prefixME_ [private]

path to MEs

Definition at line 123 of file EETriggerTowerTask.h.

Referenced by beginJob(), cleanup(), EETriggerTowerTask(), and setup().

to find the input collection of real digis

Definition at line 132 of file EETriggerTowerTask.h.

Referenced by analyze(), and EETriggerTowerTask().