Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2021-08-04 02:02:46

0001 #ifndef UCTSummaryCard_hh
0002 #define UCTSummaryCard_hh
0003 
0004 #include <vector>
0005 #include <list>
0006 
0007 #include "UCTGeometryExtended.hh"
0008 
0009 class UCTLayer1;
0010 class UCTObject;
0011 class UCTRegion;
0012 
0013 class UCTSummaryCard {
0014 public:
0015   UCTSummaryCard(const std::vector<std::vector<std::vector<uint32_t> > >* l,
0016                  uint32_t jetSeedIn = 10,
0017                  uint32_t tauSeedIn = 10,
0018                  double tauIsolationFactorIn = 0.3,
0019                  uint32_t eGammaSeedIn = 5,
0020                  double eGammaIsolationFactorIn = 0.3);
0021 
0022   // No copy constructor is needed
0023 
0024   UCTSummaryCard(const UCTSummaryCard&) = delete;
0025 
0026   // No equality operator is needed
0027 
0028   const UCTSummaryCard& operator=(const UCTSummaryCard&) = delete;
0029 
0030   virtual ~UCTSummaryCard();
0031 
0032   // To set up event data before processing
0033 
0034   const UCTRegion* getRegion(int regionEtaIndex, uint32_t regionPhiIndex) const;
0035 
0036   // UCTSummaryCard process event
0037 
0038   bool clearEvent();
0039   bool clearRegions();
0040   bool setRegionData(
0041       std::vector<UCTRegion*> inputRegions);  // Use when the region collection is available and no direct access to TPGs
0042   bool process();
0043 
0044   // Access to data
0045 
0046   const std::list<UCTObject*>& getEMObjs() { return emObjs; }
0047   const std::list<UCTObject*>& getIsoEMObjs() { return isoEMObjs; }
0048   const std::list<UCTObject*>& getTauObjs() { return tauObjs; }
0049   const std::list<UCTObject*>& getIsoTauObjs() { return isoTauObjs; }
0050   const std::list<UCTObject*>& getCentralJetObjs() { return centralJetObjs; }
0051   const std::list<UCTObject*>& getForwardJetObjs() { return forwardJetObjs; }
0052   const std::list<UCTObject*>& getBoostedJetObjs() { return boostedJetObjs; }
0053 
0054   const UCTObject* getET() { return ET; }
0055   const UCTObject* getMET() { return MET; }
0056 
0057   const UCTObject* getHT() { return HT; }
0058   const UCTObject* getMHT() { return MHT; }
0059 
0060   void print();
0061 
0062 private:
0063   // Helper functions
0064 
0065   bool processRegion(UCTRegionIndex regionIndex);
0066 
0067   // Parameters specified at constructor level
0068 
0069   //  const UCTLayer1 *uctLayer1;
0070   const std::vector<std::vector<std::vector<uint32_t> > >* pumLUT;
0071   uint32_t jetSeed;
0072   uint32_t tauSeed;
0073   double tauIsolationFactor;
0074   uint32_t eGammaSeed;
0075   double eGammaIsolationFactor;
0076 
0077   // Owned card level data
0078 
0079   std::vector<UCTRegion*> regions;
0080 
0081   double sinPhi[73];  // Make one extra so caloPhi : 1-72 can be used as index directly
0082   double cosPhi[73];
0083 
0084   std::list<UCTObject*> emObjs;
0085   std::list<UCTObject*> isoEMObjs;
0086   std::list<UCTObject*> tauObjs;
0087   std::list<UCTObject*> isoTauObjs;
0088   std::list<UCTObject*> centralJetObjs;
0089   std::list<UCTObject*> forwardJetObjs;
0090   std::list<UCTObject*> boostedJetObjs;
0091 
0092   UCTObject* ET;
0093   UCTObject* MET;
0094 
0095   UCTObject* HT;
0096   UCTObject* MHT;
0097 
0098   uint32_t cardSummary;
0099 
0100   // Pileup subtraction LUT based on multiplicity of regions > threshold
0101 
0102   uint32_t pumLevel;
0103   uint32_t pumBin;
0104 };
0105 
0106 #endif