CMS 3D CMS Logo

L1GtCorrelationCondition Class Reference

Description: evaluation of a CondCorrelation condition. More...

#include <L1Trigger/GlobalTrigger/interface/L1GtCorrelationCondition.h>

Inheritance diagram for L1GtCorrelationCondition:

L1GtConditionEvaluation

List of all members.

Public Member Functions

const bool evaluateCondition () const
 the core function to check if the condition matches
const L1GtCorrelationTemplategtCorrelationTemplate () const
 get / set the pointer to a L1GtCondition
const L1GlobalTriggerGTLgtGTL () const
 get / set the pointer to GTL
const L1GlobalTriggerPSBgtPSB () const
 get / set the pointer to PSB
 L1GtCorrelationCondition (const L1GtCorrelationCondition &)
 L1GtCorrelationCondition (const L1GtCondition *, const L1GtCondition *, const L1GtCondition *, const int, const int, const int, const int, const L1GlobalTriggerGTL *, const L1GlobalTriggerPSB *, const L1GtEtaPhiConversions *)
 from base template condition (from event setup usually)
 L1GtCorrelationCondition ()
 constructors default
L1GtCorrelationConditionoperator= (const L1GtCorrelationCondition &)
void print (std::ostream &myCout) const
 print condition
void setGtCorrelationTemplate (const L1GtCorrelationTemplate *)
void setGtGTL (const L1GlobalTriggerGTL *)
 set the pointer to GTL
void setGtPSB (const L1GlobalTriggerPSB *)
 set the pointer to PSB
virtual ~L1GtCorrelationCondition ()

Private Member Functions

void copy (const L1GtCorrelationCondition &cp)
 copy function for copy constructor and operator=

Private Attributes

int m_cond0EtaBits
int m_cond0NrL1Objects
int m_cond1EtaBits
int m_cond1NrL1Objects
const L1GtConditionm_gtCond0
 pointer to first sub-condition
const L1GtConditionm_gtCond1
 pointer to second sub-condition
const L1GtCorrelationTemplatem_gtCorrelationTemplate
 pointer to a L1GtCorrelationTemplate
const L1GtEtaPhiConversionsm_gtEtaPhiConversions
 pointer to eta and phi conversion class
const L1GlobalTriggerGTLm_gtGTL
 pointer to GTL, to be able to get the trigger objects
const L1GlobalTriggerPSBm_gtPSB
 pointer to PSB, to be able to get the trigger objects


Detailed Description

Description: evaluation of a CondCorrelation condition.

Implementation: <TODO: enter implementation details>

Author:
: Vasile Mihai Ghete - HEPHY Vienna
$Date$ $Revision$

Definition at line 36 of file L1GtCorrelationCondition.h.


Constructor & Destructor Documentation

L1GtCorrelationCondition::L1GtCorrelationCondition (  ) 

constructors default

Definition at line 60 of file L1GtCorrelationCondition.cc.

00060                                                    :
00061     L1GtConditionEvaluation() {
00062 
00063     // empty
00064 
00065 }

L1GtCorrelationCondition::L1GtCorrelationCondition ( const L1GtCondition corrTemplate,
const L1GtCondition cond0Condition,
const L1GtCondition cond1Condition,
const   int,
const   int,
const   int,
const   int,
const L1GlobalTriggerGTL ptrGTL,
const L1GlobalTriggerPSB ptrPSB,
const L1GtEtaPhiConversions etaPhiConversions 
)

from base template condition (from event setup usually)

Definition at line 68 of file L1GtCorrelationCondition.cc.

References L1GtConditionEvaluation::m_condMaxNumberObjects.

00074                                                         :
00075             L1GtConditionEvaluation(),
00076             m_gtCorrelationTemplate(static_cast<const L1GtCorrelationTemplate*>(corrTemplate)),
00077             m_gtCond0(cond0Condition), m_gtCond1(cond1Condition),
00078             m_cond0NrL1Objects(cond0NrL1Objects),
00079             m_cond1NrL1Objects(cond1NrL1Objects), m_cond0EtaBits(cond0EtaBits),
00080             m_cond1EtaBits(cond1EtaBits), m_gtGTL(ptrGTL), m_gtPSB(ptrPSB),
00081             m_gtEtaPhiConversions(etaPhiConversions) {
00082 
00083     m_condMaxNumberObjects = 2; // irrelevant for correlation conditions
00084 
00085 }

L1GtCorrelationCondition::L1GtCorrelationCondition ( const L1GtCorrelationCondition cp  ) 

Definition at line 112 of file L1GtCorrelationCondition.cc.

References copy().

00113                                             :
00114     L1GtConditionEvaluation() {
00115     copy(cp);
00116 }

L1GtCorrelationCondition::~L1GtCorrelationCondition (  )  [virtual]

Definition at line 119 of file L1GtCorrelationCondition.cc.

00119                                                     {
00120 
00121     // empty
00122 
00123 }


Member Function Documentation

void L1GtCorrelationCondition::copy ( const L1GtCorrelationCondition cp  )  [private]

copy function for copy constructor and operator=

Definition at line 88 of file L1GtCorrelationCondition.cc.

References L1GtConditionEvaluation::m_combinationsInCond, m_cond0EtaBits, m_cond0NrL1Objects, m_cond1EtaBits, m_cond1NrL1Objects, L1GtConditionEvaluation::m_condLastResult, L1GtConditionEvaluation::m_condMaxNumberObjects, m_gtCond0, m_gtCond1, m_gtCorrelationTemplate, m_gtEtaPhiConversions, m_gtGTL, and m_gtPSB.

Referenced by L1GtCorrelationCondition(), and operator=().

const bool L1GtCorrelationCondition::evaluateCondition (  )  const [virtual]

the core function to check if the condition matches

Implements L1GtConditionEvaluation.

Definition at line 156 of file L1GtCorrelationCondition.cc.

References CenJet, L1GtCorrelationTemplate::cond0Category(), L1GtCorrelationTemplate::cond1Category(), CondCalo, CondEnergySum, L1GtConditionEvaluation::condLastResult(), CondMuon, lat::endl(), L1GtConditionEvaluation::evaluateConditionStoreResult(), ForJet, L1GlobalTriggerPSB::getCandL1CenJet(), L1GlobalTriggerPSB::getCandL1ETM(), L1GlobalTriggerPSB::getCandL1ForJet(), L1GlobalTriggerPSB::getCandL1IsoEG(), L1GlobalTriggerGTL::getCandL1Mu(), L1GlobalTriggerPSB::getCandL1NoIsoEG(), L1GlobalTriggerPSB::getCandL1TauJet(), L1GtConditionEvaluation::getCombinationsInCond(), edm::isDebugEnabled(), IsoEG, LogTrace, m_cond0EtaBits, m_cond0NrL1Objects, m_cond1EtaBits, m_cond1NrL1Objects, m_gtCond0, m_gtCond1, m_gtCorrelationTemplate, m_gtGTL, m_gtPSB, NoIsoEG, L1GtCondition::objectType(), L1GctEtMiss::phi(), L1GtCaloCondition::print(), L1GtMuonCondition::print(), L1GtEnergySumCondition::print(), and TauJet.

00156                                                              {
00157 
00158     bool condResult = false;
00159     
00160     // number of objects in condition (it is 2, no need to retrieve from 
00161     // condition template) and their type 
00162     int nObjInCond = 2;    
00163     std::vector<L1GtObject> cndObjTypeVec(nObjInCond);
00164 
00165     // evaluate first the two sub-conditions (Type1s)
00166     
00167     const L1GtConditionCategory cond0Categ = m_gtCorrelationTemplate->cond0Category();
00168     const L1GtConditionCategory cond1Categ = m_gtCorrelationTemplate->cond1Category();
00169 
00170     const L1GtMuonTemplate* corrMuon = 0;
00171     const L1GtCaloTemplate* corrCalo = 0;
00172     const L1GtEnergySumTemplate* corrEnergySum = 0;
00173     
00174     CombinationsInCond cond0Comb;
00175     CombinationsInCond cond1Comb;
00176         
00177     switch (cond0Categ) {
00178         case CondMuon: {
00179             corrMuon = static_cast<const L1GtMuonTemplate*>(m_gtCond0);
00180             L1GtMuonCondition muCondition(corrMuon, m_gtGTL,
00181                     m_cond0NrL1Objects, m_cond0EtaBits);
00182             
00183             muCondition.evaluateConditionStoreResult();
00184             condResult = muCondition.condLastResult();
00185             
00186             cond0Comb = *(muCondition.getCombinationsInCond());
00187             cndObjTypeVec[0] = (corrMuon->objectType())[0];
00188             
00189             if (edm::isDebugEnabled() ) {
00190                 std::ostringstream myCout;
00191                 muCondition.print(myCout);
00192 
00193                 LogTrace("L1GtCorrelationCondition") << myCout.str() << std::endl;
00194             }
00195         }
00196             break;
00197         case CondCalo: {
00198             corrCalo = static_cast<const L1GtCaloTemplate*>(m_gtCond0);
00199             L1GtCaloCondition caloCondition(corrCalo, m_gtPSB,
00200                     m_cond0NrL1Objects, m_cond0NrL1Objects, m_cond0NrL1Objects,
00201                     m_cond0NrL1Objects, m_cond0NrL1Objects, m_cond0EtaBits);
00202 
00203             caloCondition.evaluateConditionStoreResult();
00204             condResult = caloCondition.condLastResult();
00205             
00206             cond0Comb = *(caloCondition.getCombinationsInCond());
00207             cndObjTypeVec[0] = (corrCalo->objectType())[0];
00208 
00209             if (edm::isDebugEnabled() ) {
00210                 std::ostringstream myCout;
00211                 caloCondition.print(myCout);
00212 
00213                 LogTrace("L1GtCorrelationCondition") << myCout.str() << std::endl;
00214             }
00215         }
00216             break;
00217         case CondEnergySum: {
00218             corrEnergySum = static_cast<const L1GtEnergySumTemplate*>(m_gtCond0);
00219             L1GtEnergySumCondition eSumCondition(corrEnergySum, m_gtPSB);
00220 
00221             eSumCondition.evaluateConditionStoreResult();
00222             condResult = eSumCondition.condLastResult();
00223             
00224             cond0Comb = *(eSumCondition.getCombinationsInCond());
00225             cndObjTypeVec[0] = (corrEnergySum->objectType())[0];
00226 
00227             if (edm::isDebugEnabled() ) {
00228                 std::ostringstream myCout;
00229                 eSumCondition.print(myCout);
00230 
00231                 LogTrace("L1GtCorrelationCondition") << myCout.str() << std::endl;
00232             }
00233         }
00234             break;
00235         default: {
00236             // should not arrive here
00237             condResult = false;
00238         }                            
00239             break;
00240     }
00241 
00242     // return if first subcondition is false
00243     if (!condResult) {
00244         return false;
00245     }
00246     
00247     
00248     switch (cond1Categ) {
00249         case CondMuon: {
00250             corrMuon = static_cast<const L1GtMuonTemplate*>(m_gtCond1);
00251             L1GtMuonCondition muCondition(corrMuon, m_gtGTL,
00252                     m_cond1NrL1Objects, m_cond1EtaBits);
00253             
00254             muCondition.evaluateConditionStoreResult();
00255             condResult = muCondition.condLastResult();
00256 
00257             cond1Comb = *(muCondition.getCombinationsInCond());
00258             cndObjTypeVec[1] = (corrMuon->objectType())[0];
00259 
00260             if (edm::isDebugEnabled() ) {
00261                 std::ostringstream myCout;
00262                 muCondition.print(myCout);
00263 
00264                 LogTrace("L1GtCorrelationCondition") << myCout.str() << std::endl;
00265             }
00266         }
00267             break;
00268         case CondCalo: {
00269             corrCalo = static_cast<const L1GtCaloTemplate*>(m_gtCond1);
00270             L1GtCaloCondition caloCondition(corrCalo, m_gtPSB,
00271                     m_cond1NrL1Objects, m_cond1NrL1Objects, m_cond1NrL1Objects,
00272                     m_cond1NrL1Objects, m_cond1NrL1Objects, m_cond1EtaBits);
00273 
00274             caloCondition.evaluateConditionStoreResult();
00275             condResult = caloCondition.condLastResult();
00276  
00277             cond1Comb = *(caloCondition.getCombinationsInCond());
00278             cndObjTypeVec[1] = (corrCalo->objectType())[0];
00279 
00280             if (edm::isDebugEnabled() ) {
00281                 std::ostringstream myCout;
00282                 caloCondition.print(myCout);
00283 
00284                 LogTrace("L1GtCorrelationCondition") << myCout.str() << std::endl;
00285             }
00286         }
00287             break;
00288         case CondEnergySum: {
00289             corrEnergySum = static_cast<const L1GtEnergySumTemplate*>(m_gtCond1);
00290             L1GtEnergySumCondition eSumCondition(corrEnergySum, m_gtPSB);
00291             eSumCondition.evaluateConditionStoreResult();
00292             condResult = eSumCondition.condLastResult();
00293 
00294             cond1Comb = *(eSumCondition.getCombinationsInCond());
00295             cndObjTypeVec[1] = (corrEnergySum->objectType())[0];
00296 
00297             if (edm::isDebugEnabled() ) {
00298                 std::ostringstream myCout;
00299                 eSumCondition.print(myCout);
00300 
00301                 LogTrace("L1GtCorrelationCondition") << myCout.str() << std::endl;
00302             }
00303         }
00304             break;
00305         default: {
00306             // should not arrive here
00307             condResult = false;
00308         }                            
00309             break;
00310     }
00311     
00312     // return if second subcondition is false 
00313     // if here, the first subcondition was true
00314     if (!condResult) {
00315         return false;
00316     }
00317     
00318     //
00319     // evaluate the delta_eta and delta_phi correlations
00320     //
00321     
00322     // store the indices of the calorimeter objects
00323     // from the combination evaluated in the condition
00324     SingleCombInCond objectsInComb;
00325     objectsInComb.reserve(nObjInCond);
00326 
00327     // clear the m_combinationsInCond vector
00328     (*m_combinationsInCond).clear();
00329     
00330     // pointers to objects
00331     const std::vector<const L1MuGMTCand*>* candMuVec = 0;
00332     const std::vector<const L1GctCand*>* candCaloVec = 0;
00333     const L1GctEtMiss* candETM = 0; // no other energy sum appears in correlation conditions
00334 
00335     unsigned int phiIndex0;
00336     unsigned int phiIndex1;
00337     unsigned int etaIndex0;
00338     unsigned int etaIndex1;
00339 
00340     // loop over all combinations which produced individually "true" as Type1s        
00341     for (std::vector<SingleCombInCond>::const_iterator 
00342         it0Comb = cond0Comb.begin(); it0Comb != cond0Comb.end(); it0Comb++) {
00343 
00344         // Type1s: there is 1 object only, no need for a loop (*it0Comb)[0]
00345         int obj0Index = (*it0Comb)[0];
00346         switch (cond0Categ) {
00347             case CondMuon: {
00348                 candMuVec = m_gtGTL->getCandL1Mu();
00349                 phiIndex0 = (*candMuVec)[obj0Index]->phiIndex();
00350                 etaIndex0 = (*candMuVec)[obj0Index]->etaIndex();
00351                 
00352             }
00353                 break;
00354             case CondCalo: {
00355                 switch (cndObjTypeVec[0]) {
00356                     case NoIsoEG:
00357                         candCaloVec = m_gtPSB->getCandL1NoIsoEG();
00358                         break;
00359                     case IsoEG:
00360                         candCaloVec = m_gtPSB->getCandL1IsoEG();
00361                         break;
00362                     case CenJet:
00363                         candCaloVec = m_gtPSB->getCandL1CenJet();
00364                         break;
00365                     case ForJet:
00366                         candCaloVec = m_gtPSB->getCandL1ForJet();
00367                         break;
00368                     case TauJet:
00369                         candCaloVec = m_gtPSB->getCandL1TauJet();
00370                         break;
00371                     default:
00372                         // do nothing
00373                         break;
00374                 }
00375 
00376                 phiIndex0 = (*candCaloVec)[obj0Index]->phiIndex();
00377                 etaIndex0 = (*candCaloVec)[obj0Index]->etaIndex();
00378             }
00379                 break;
00380             case CondEnergySum: {
00381                 candETM = m_gtPSB->getCandL1ETM();
00382                 phiIndex0 = candETM->phi();
00383             }
00384                 break;
00385             default: {
00386                 // should not arrive here
00387                 condResult = false;
00388             }                            
00389                 break;
00390         }
00391 
00392         for (std::vector<SingleCombInCond>::const_iterator 
00393             it1Comb = cond1Comb.begin(); it1Comb != cond1Comb.end(); it1Comb++) {
00394 
00395             // Type1s: there is 1 object only, no need for a loop (*it1Comb)[0]
00396             int obj1Index = (*it1Comb)[0];
00397             switch (cond1Categ) {
00398                 case CondMuon: {
00399                     candMuVec = m_gtGTL->getCandL1Mu();
00400                     phiIndex1 = (*candMuVec)[obj1Index]->phiIndex();
00401                     etaIndex1 = (*candMuVec)[obj1Index]->etaIndex();
00402                     
00403                 }
00404                     break;
00405                 case CondCalo: {
00406                     switch (cndObjTypeVec[1]) {
00407                         case NoIsoEG:
00408                             candCaloVec = m_gtPSB->getCandL1NoIsoEG();
00409                             break;
00410                         case IsoEG:
00411                             candCaloVec = m_gtPSB->getCandL1IsoEG();
00412                             break;
00413                         case CenJet:
00414                             candCaloVec = m_gtPSB->getCandL1CenJet();
00415                             break;
00416                         case ForJet:
00417                             candCaloVec = m_gtPSB->getCandL1ForJet();
00418                             break;
00419                         case TauJet:
00420                             candCaloVec = m_gtPSB->getCandL1TauJet();
00421                             break;
00422                         default:
00423                             // do nothing
00424                             break;
00425                     }
00426 
00427                     phiIndex1 = (*candCaloVec)[obj1Index]->phiIndex();
00428                     etaIndex1 = (*candCaloVec)[obj1Index]->etaIndex();
00429                 }
00430                     break;
00431                 case CondEnergySum: {
00432                     candETM = m_gtPSB->getCandL1ETM();
00433                     phiIndex1 = candETM->phi();
00434                 }
00435                     break;
00436                 default: {
00437                     // should not arrive here
00438                     condResult = false;
00439                 }                            
00440                     break;
00441             }
00442 
00443             if (edm::isDebugEnabled() ) {
00444                 LogTrace("L1GtCorrelationCondition") 
00445                     << "\n First correlation object of type   " << cndObjTypeVec[0] 
00446                     << " with collection index " << obj0Index 
00447                     << ": phiIndex = " << phiIndex0 << " etaIndex = " << etaIndex0
00448                     << "\n Second correlation object  of type " << cndObjTypeVec[1] 
00449                     << " with collection index " << obj1Index 
00450                     << " phiIndex = " << phiIndex1 << " etaIndex = " << etaIndex1
00451                     << std::endl;
00452             }
00453             
00454             // clear the indices in the combination
00455             objectsInComb.clear();
00456             //...
00457             
00458             objectsInComb.push_back(obj0Index);
00459             objectsInComb.push_back(obj1Index); //...
00460             
00461             // evaluate delta_eta
00462             
00463             // evaluate delta_phi
00464 
00465             // if we get here all checks were successfull for this combination
00466             // set the general result for evaluateCondition to "true"
00467 
00468             condResult = true;
00469             (*m_combinationsInCond).push_back(objectsInComb);            
00470         
00471         }
00472     
00473     }
00474     
00475     return condResult;
00476 
00477 }

const L1GtCorrelationTemplate* L1GtCorrelationCondition::gtCorrelationTemplate (  )  const [inline]

get / set the pointer to a L1GtCondition

Definition at line 71 of file L1GtCorrelationCondition.h.

References m_gtCorrelationTemplate.

00071                                                                         {
00072         return m_gtCorrelationTemplate;
00073     }

const L1GlobalTriggerGTL* L1GtCorrelationCondition::gtGTL (  )  const [inline]

get / set the pointer to GTL

Definition at line 78 of file L1GtCorrelationCondition.h.

References m_gtGTL.

00078                                                    {
00079         return m_gtGTL;
00080     }

const L1GlobalTriggerPSB* L1GtCorrelationCondition::gtPSB (  )  const [inline]

get / set the pointer to PSB

Definition at line 85 of file L1GtCorrelationCondition.h.

References m_gtPSB.

00085                                                    {
00086         return m_gtPSB;
00087     }

L1GtCorrelationCondition & L1GtCorrelationCondition::operator= ( const L1GtCorrelationCondition cp  ) 

Definition at line 126 of file L1GtCorrelationCondition.cc.

References copy().

00128 {
00129     copy(cp);
00130     return *this;
00131 }

void L1GtCorrelationCondition::print ( std::ostream &  myCout  )  const [virtual]

print condition

Reimplemented from L1GtConditionEvaluation.

Definition at line 480 of file L1GtCorrelationCondition.cc.

References m_gtCorrelationTemplate, L1GtConditionEvaluation::print(), and L1GtCorrelationTemplate::print().

Referenced by L1GlobalTriggerGTL::run().

00480                                                              {
00481 
00482     m_gtCorrelationTemplate->print(myCout);
00483     L1GtConditionEvaluation::print(myCout);
00484 
00485 }

void L1GtCorrelationCondition::setGtCorrelationTemplate ( const L1GtCorrelationTemplate corrTempl  ) 

Definition at line 134 of file L1GtCorrelationCondition.cc.

References m_gtCorrelationTemplate.

00135                                                   {
00136 
00137     m_gtCorrelationTemplate = corrTempl;
00138 
00139 }

void L1GtCorrelationCondition::setGtGTL ( const L1GlobalTriggerGTL ptrGTL  ) 

set the pointer to GTL

Definition at line 142 of file L1GtCorrelationCondition.cc.

References m_gtGTL.

00142                                                                         {
00143 
00144     m_gtGTL = ptrGTL;
00145 
00146 }

void L1GtCorrelationCondition::setGtPSB ( const L1GlobalTriggerPSB ptrPSB  ) 

set the pointer to PSB

Definition at line 149 of file L1GtCorrelationCondition.cc.

References m_gtPSB.

00149                                                                         {
00150 
00151     m_gtPSB = ptrPSB;
00152 
00153 }


Member Data Documentation

int L1GtCorrelationCondition::m_cond0EtaBits [private]

Definition at line 110 of file L1GtCorrelationCondition.h.

Referenced by copy(), and evaluateCondition().

int L1GtCorrelationCondition::m_cond0NrL1Objects [private]

Definition at line 108 of file L1GtCorrelationCondition.h.

Referenced by copy(), and evaluateCondition().

int L1GtCorrelationCondition::m_cond1EtaBits [private]

Definition at line 111 of file L1GtCorrelationCondition.h.

Referenced by copy(), and evaluateCondition().

int L1GtCorrelationCondition::m_cond1NrL1Objects [private]

Definition at line 109 of file L1GtCorrelationCondition.h.

Referenced by copy(), and evaluateCondition().

const L1GtCondition* L1GtCorrelationCondition::m_gtCond0 [private]

pointer to first sub-condition

Definition at line 102 of file L1GtCorrelationCondition.h.

Referenced by copy(), and evaluateCondition().

const L1GtCondition* L1GtCorrelationCondition::m_gtCond1 [private]

pointer to second sub-condition

Definition at line 105 of file L1GtCorrelationCondition.h.

Referenced by copy(), and evaluateCondition().

const L1GtCorrelationTemplate* L1GtCorrelationCondition::m_gtCorrelationTemplate [private]

pointer to a L1GtCorrelationTemplate

Definition at line 99 of file L1GtCorrelationCondition.h.

Referenced by copy(), evaluateCondition(), gtCorrelationTemplate(), print(), and setGtCorrelationTemplate().

const L1GtEtaPhiConversions* L1GtCorrelationCondition::m_gtEtaPhiConversions [private]

pointer to eta and phi conversion class

Definition at line 120 of file L1GtCorrelationCondition.h.

Referenced by copy().

const L1GlobalTriggerGTL* L1GtCorrelationCondition::m_gtGTL [private]

pointer to GTL, to be able to get the trigger objects

Definition at line 114 of file L1GtCorrelationCondition.h.

Referenced by copy(), evaluateCondition(), gtGTL(), and setGtGTL().

const L1GlobalTriggerPSB* L1GtCorrelationCondition::m_gtPSB [private]

pointer to PSB, to be able to get the trigger objects

Definition at line 117 of file L1GtCorrelationCondition.h.

Referenced by copy(), evaluateCondition(), gtPSB(), and setGtPSB().


The documentation for this class was generated from the following files:
Generated on Tue Jun 9 18:26:43 2009 for CMSSW by  doxygen 1.5.4