L1 Global Trigger DQM Online

Complete: 4

Introduction

This wiki page provide a list of all L1 GT DQM modules from the L1 DQM package.

Monitoring of GT PSB (L1GtPsbToDigis)

GT to GCT conversion

This is intended to be documentation on the tools required to perform a data conversion from GT into GCT format. The problem is illustrated in the following figure:

img6c98b1463f8b0f2b5c2caf52d57763b6.JPG
scheme

In order to be able to compare the data which is acquired directly from the GCT using the PSBs to the data acquired from the GT one can use the L1GtPsbToDigis conversion class which can be found in DQM/L1TMonitor/src . We will briefly discuss the structure of this class, how to use it and show the comparison of the L1TGC histograms from both data outputs as an application.

The L1GtPsbToDigis conversion class - overview

The source code file L1GtPsbToDigis.cc is available in the DQM/L1TMonitor/src folder and the corresponding header in DQM/L1TMonitor/interface. The basic concept of this class is to receive a reference on the event, read out the required GT raw data bit by bit, create all the required GCT objects (collections of isolated electrons, non isolated electrons, Jets, missing Et etc.) and store these collections in a vector. This vector has the same size as the number of bunch crossings which the user wants to consider. Therefore, the result is a vector in a vector. The maximum number of bunch crossings that can be handled by this class is 5. As an example, consider isolated electrons: For each bunch crossing we need a collection of 4 candidates, so in case of reading out 3 bunch crossings we have a total of 12 candidates per event. However, since at the moment the maximum number that can be read out is 3, one should test and verify functionality of the conversion before using it with 5 bunch crossings. When accessing a collection of candidates of a specific bunch crossing, you need to be aware that the center bunch crossing will be stored in vector component 1 , the bunch crossing before the center bunch crossing in component 0 and the bunch crossing after the center bunch crossing in component 2. The same argument goes for taking into account 5 bunch crossings with component 2 storing the center bunch crossing. The constructor of this class receives bool parameters from the python configuration file of your analyzer (see HOW TO description below) allowing to configure the number of bunch crossings as well as the kind of GCT objects you wish to create. Following methods are available for this class:

“getVecGctNonIsoEmCands” , “getVecGctIsoEmCands”, “getVecGctForJetCands” “getVecGctCenJetCands”,” getVecGctTauJetCands”, “getVecGctEtTotCol”, 
“getVecGctEtHadCol”, “getVecGctEtMissCol”, “getVecGctHtMissCol”, “getVecGctHFringEtSumsCol”, “getVecGctHFBitCountsCol”, “getVecGtTechTrRecord”
all of which will return a vector containing the specific collection for each bunch crossing. The method “convert” loops over all PSB words after receiving an event from the framework, checks in a switch which bool parameters corresponding to the required GCT objects are set to “true” and then performs the read out of this object in a separate function.

L1GtPsbToDigis conversion - HOW TO

The following steps are required to use the conversion class. In any case you can use the L1tGctDataFromPsb class as a blueprint.

-use the following include:

    #include "DQM/L1TMonitor/interface/L1GtPsbToDigis.h“ 
   
-include the following parameters into the constructor of your class:
   doIsoEm_= ps.getParameter<bool>( "doIsoEm" );  
   doNonIsoEm_= ps.getParameter<bool>( "doNonIsoEm" );
   doJetCnts_= ps.getParameter<bool>( "doJetCnts" );
   doCenJets_= ps.getParameter<bool>( "doCenJets" );
   doTauJets_= ps.getParameter<bool>( "doTauJets" );
   doForJets_= ps.getParameter<bool>( "doForJets" );
   doEtHad_= ps.getParameter<bool>( "doEtHad" );
   doEtMiss_= ps.getParameter<bool>( "doEtMiss" );
   doEtTotal_= ps.getParameter<bool>( "doEtTotal" );
   doHFRingEtSums_= ps.getParameter<bool>( "doHFRingEtSums");
   doHFBitCounts_= ps.getParameter<bool>( "doHFBitCounts");
   doTechTr_= ps.getParameter<bool>( "doTechTr");   
   allBX_=ps.getParameter<bool>( "allBX" );    
   use5BX=ps.getParameter<bool>(“use5BX”);   
     
Here ps denotes the parameter set you get passed in the constructor of your analyzer. The first parameters allow to turn on and off certain GCT objects as discussed before, the last two are used to configure the number of bunch crossings to be converted: If you want to use only one bunch crossing , “allBX” must be set to “false”.If you want to use 3 bunchcrossings, “allBX” must be set to “true” and only if you want to use 5 bunch crossings also “use5BX” must be turned true.

-instance the convertion class using:


   L1GtPsbToDigis gtPsbToDigis(e,c,src_,allBX_,use5BX_,doNonIsoEm_,doIsoEm_,doJetCnts_,doCenJets_,doTauJets_,doForJets_,
   doEtMiss_,doHtMiss_,doEtTotal_,doHFRingEtSums_,doHFBitCounts_,doTechTr_)

   gtPsbToDigis.convert(); 
     

-call methods to recieve the required collections and store them into a vector:

   const std::vector<L1GctEmCandCollection>& vecGctNonIsoEmCands= gtPsbToDigis.getVecGctNonIsoEmCands();       
   const std::vector<L1GctEmCandCollection>& vecGctIsoEmCands= gtPsbToDigis.getVecGctIsoEmCands();      
   const std::vector<L1GctJetCandCollection>&vecGctForJetCands=gtPsbToDigis.getVecGctForJetCands();
   const std::vector<L1GctJetCandCollection>& vecGctCenJetCands= gtPsbToDigis.getVecGctCenJetCands();
   const std::vector<L1GctJetCandCollection>& vecGctTauJetCands= gtPsbToDigis.getVecGctTauJetCands(); 
   const std::vector<L1GctEtTotalCollection>& vecGctEtTotCol= gtPsbToDigis.getVecGctEtTotCol(); 
   const std::vector<L1GctEtHadCollection>& vecGctEtHadCol= gtPsbToDigis.getVecGctEtHadCol(); 
   const std::vector<L1GctEtMissCollection>& vecGctEtMissCol= gtPsbToDigis.getVecGctEtMissCol(); 
   const std::vector<L1GctHFRingEtSumsCollection>& vecGctHFRingEtSumsCol= gtPsbToDigis.getVecGctHFringEtSumsCol();
   const std::vector<L1GctHFBitCountsCollection>& vecGctHFBitCountsCol= gtPsbToDigis.getVecGctHFBitCountsCol();
   const std::vector<L1GtTechnicalTriggerRecord>& vecGtTechTrRecord= gtPsbToDigis.getVecGtTechTrRecord(); 
    
-include the required parameters into the python configuration file:
   doIsoEm = cms.bool(True),  
   doNonIsoEm = cms.bool(True),
   doJetCnts = cms.bool(True),
   doCenJets = cms.bool(True),
   doTauJets = cms.bool(True),
   doForJets = cms.bool(True),
   doEtHad = cms.bool(True),
   doEtMiss = cms.bool(True),
   doEtTotal = cms.bool(True),
   doHFRingEtSums = cms.bool(True),
   doHFBitCounts = cms.bool(True),
   doTechTr = cms.bool(True),
   allBX = cms.bool(True),
   use5BX=cms.bool(False)
   
The object parameters are by default all set to true while use5BX is set to false.

The L1tGctDataFromPsb Analyzer

If you want to create your own analyzer you can basically use this one as a blueprint. The source code file can be found in DQM/L1TMonitor/src and the corresponding header in DQM/L1TMonitor/interface. This analyzer uses the conversion as described before and creates all the GCT histograms with data coming from the GT. However, since the GCT only creates histograms of the main bunch crossing you must use the histograms in the following root output folder for comparison: L1T/L1TGT/GCTHistograms/MainBX . The analyzer will also create additional subdirectories for additional bunch crossings. Internal if-conditions allow to book more or less histograms according to the configuration you choose. You can configure the bool parameters using the DQM/L1TMonitor/interface/L1tGctDataFromPsb_cfi.py file.

The L1TGTClient

In order to simplify the comparison of the same histograms from the GCT and GT an additional client to subtract histograms is available at: DQM/L1TMonitorClient/src (DQM/L1TMonitorClient/interface for the header). The Client receives all GCT histograms from the GCT and the GT via the methods get1DHisto and get2DHisto, books additional histograms and fills them with the difference of both. To subtract 1D and 2D histograms, the methods makeDiff1D and makeDiff2D are available. The result should of course be an empty histogram. These additional histograms are stored in the root output path L1T/L1TGT/GctGtDiff/.

Review Status

Editor/Reviewer and date Comments
VasileGhete - 30-Oct-2009 template provided
StephanStetina - 30-Oct-2009 initial version

Responsible: VasileGhete

Edit | Attach | Watch | Print version | History: r4 < r3 < r2 < r1 | Backlinks | Raw View | WYSIWYG | More topic actions
Topic revision: r4 - 2009-10-30 - unknown
 
    • Cern Search Icon Cern Search
    • TWiki Search Icon TWiki Search
    • Google Search Icon Google Search

    CMSPublic All webs login

This site is powered by the TWiki collaboration platform Powered by PerlCopyright &© 2008-2019 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback