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