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
|
---|