Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-11-01 06:11:54

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