[0e11b5c] | 1 | #ifndef PUPPICLEANCONTAINER_HH
|
---|
| 2 | #define PUPPICLEANCONTAINER_HH
|
---|
| 3 |
|
---|
| 4 |
|
---|
| 5 | #include "PUPPI/RecoObj.hh"
|
---|
| 6 | #include "PUPPI/puppiParticle.hh"
|
---|
| 7 | #include "PUPPI/puppiAlgoBin.hh"
|
---|
| 8 |
|
---|
| 9 | #include "fastjet/PseudoJet.hh"
|
---|
| 10 | #include <algorithm>
|
---|
| 11 |
|
---|
| 12 | using namespace std;
|
---|
| 13 |
|
---|
| 14 | //......................
|
---|
| 15 |
|
---|
| 16 | class puppiCleanContainer{
|
---|
| 17 |
|
---|
| 18 | public:
|
---|
| 19 |
|
---|
| 20 | // basic constructor which takes input particles as RecoObj, the tracker eta extension and other two boolean info
|
---|
| 21 | puppiCleanContainer(std::vector<RecoObj> inParticles, // incoming particles of the event
|
---|
| 22 | std::vector<puppiAlgoBin> puppiAlgo, // vector with the definition of the puppi algorithm in different eta region (one for each eta)
|
---|
| 23 | float minPuppiWeight = 0.01, // min puppi weight cut
|
---|
| 24 | bool useExp = false // useDz vertex probability
|
---|
| 25 | );
|
---|
| 26 |
|
---|
| 27 | ~puppiCleanContainer();
|
---|
| 28 |
|
---|
| 29 | // ----- get methods
|
---|
| 30 |
|
---|
| 31 | // get all the PF particles
|
---|
| 32 | std::vector<fastjet::PseudoJet> pfParticles() { return fPFParticles_; }
|
---|
| 33 | // get all the PF charged from PV
|
---|
| 34 | std::vector<fastjet::PseudoJet> pvParticles() { return fChargedPV_; }
|
---|
| 35 | // get all the PF charged from PU
|
---|
| 36 | std::vector<fastjet::PseudoJet> puParticles() { return fChargedNoPV_; }
|
---|
| 37 | // get CHS particle collection
|
---|
| 38 | std::vector<fastjet::PseudoJet> pfchsParticles(){ return fPFchsParticles_; }
|
---|
| 39 | // get puppi weight for all particles
|
---|
| 40 | std::vector<float> getPuppiWeights() { return fPuppiWeights_; };
|
---|
| 41 |
|
---|
| 42 | // process puppi
|
---|
| 43 | std::vector<fastjet::PseudoJet> puppiEvent();
|
---|
| 44 |
|
---|
| 45 | protected:
|
---|
| 46 |
|
---|
| 47 | void getRMSAvg(const int &, std::vector<fastjet::PseudoJet> &, std::vector<fastjet::PseudoJet> &);
|
---|
| 48 | float goodVar (const fastjet::PseudoJet &, const std::vector<fastjet::PseudoJet> &, const int &, const float &);
|
---|
| 49 | void computeMedRMS(const int &);
|
---|
| 50 | float compute(const float &, const std::vector<puppiParticle> &, const std::vector<puppiAlgoBin> &, const std::vector<int> &);
|
---|
| 51 |
|
---|
| 52 | // some get functions
|
---|
| 53 | float getNeutralPtCut(const float&, const float&, const int&);
|
---|
| 54 | std::vector<int> getPuppiId(const float &, const float &, const std::vector<puppiAlgoBin> &);
|
---|
| 55 | bool isGoodPuppiId(const float &, const float &, const puppiAlgoBin &);
|
---|
| 56 | float getChi2FromdZ(float);
|
---|
| 57 | // other functions
|
---|
| 58 | float var_within_R(const int &, const vector<fastjet::PseudoJet> &, const fastjet::PseudoJet &, const float &);
|
---|
| 59 | float pt_within_R(const std::vector<fastjet::PseudoJet> &, const fastjet::PseudoJet &, const float &);
|
---|
| 60 | fastjet::PseudoJet flow_within_R(const vector<fastjet::PseudoJet> &, const fastjet::PseudoJet &, const float &);
|
---|
| 61 |
|
---|
| 62 |
|
---|
| 63 | private:
|
---|
| 64 |
|
---|
| 65 | std::vector<RecoObj> fRecoParticles_;
|
---|
| 66 | std::vector<fastjet::PseudoJet> fPFParticles_;
|
---|
| 67 | std::vector<fastjet::PseudoJet> fPFchsParticles_;
|
---|
| 68 | std::vector<fastjet::PseudoJet> fChargedPV_;
|
---|
| 69 | std::vector<fastjet::PseudoJet> fChargedNoPV_;
|
---|
| 70 |
|
---|
| 71 | std::vector<puppiAlgoBin> puppiAlgo_;
|
---|
| 72 | std::vector<float> fPuppiWeights_;
|
---|
| 73 |
|
---|
| 74 | float fMinPuppiWeight_;
|
---|
| 75 | float fPVFrac_;
|
---|
| 76 |
|
---|
| 77 | int fNPV_;
|
---|
| 78 | bool fUseExp_ ;
|
---|
| 79 |
|
---|
| 80 | };
|
---|
| 81 |
|
---|
| 82 | #endif
|
---|