PandaTree
Electron.h
1 #ifndef PandaTree_Objects_Electron_h
2 #define PandaTree_Objects_Electron_h
3 #include "Constants.h"
4 #include "Lepton.h"
5 #include "../../Framework/interface/Array.h"
6 #include "../../Framework/interface/Collection.h"
7 #include "../../Framework/interface/Ref.h"
8 #include "../../Framework/interface/RefVector.h"
9 #include "SuperCluster.h"
10 
11 namespace panda {
12 
13  class Electron : public Lepton {
14  public:
15  struct datastore : public Lepton::datastore {
17  ~datastore() { deallocate(); }
18 
19  /* Lepton
20  Float_t* pfPt{0};
21  Char_t* charge{0};
22  Bool_t* loose{0};
23  Bool_t* medium{0};
24  Bool_t* tight{0};
25  Bool_t* hltsafe{0};
26  Float_t* chIso{0};
27  Float_t* nhIso{0};
28  Float_t* phIso{0};
29  Float_t* puIso{0};
30  Float_t* dxy{0};
31  Float_t* dz{0};
32  ContainerBase const* matchedPFContainer_{0};
33  Short_t* matchedPF_{0};
34  ContainerBase const* matchedGenContainer_{0};
35  Short_t* matchedGen_{0};
36  ContainerBase const* vertexContainer_{0};
37  Short_t* vertex_{0};
38  */
39  Float_t* chIsoPh{0};
40  Float_t* nhIsoPh{0};
41  Float_t* phIsoPh{0};
42  Float_t* ecalIso{0};
43  Float_t* hcalIso{0};
44  Float_t* trackIso{0};
45  Float_t* isoPUOffset{0};
46  Float_t* sieie{0};
47  Float_t* sipip{0};
48  Float_t* r9{0};
49  Float_t* dEtaInSeed{0};
50  Float_t* dPhiIn{0};
51  Float_t* eseed{0};
52  Float_t* hOverE{0};
53  Float_t* ecalE{0};
54  Float_t* trackP{0};
55  Float_t* regPt{0};
56  Float_t* smearedPt{0};
57  Float_t* mvaVal{0};
58  UShort_t* nMissingHits{0};
59  Bool_t* veto{0};
60  Bool_t* mvaWP90{0};
61  Bool_t* mvaWP80{0};
62  Bool_t* mvaWPLoose{0};
63  Bool_t* mvaIsoWP90{0};
64  Bool_t* mvaIsoWP80{0};
65  Bool_t* mvaIsoWPLoose{0};
66  Bool_t* conversionVeto{0};
67  Bool_t* tripleCharge{0};
68  ContainerBase const* superClusterContainer_{0};
69  Short_t* superCluster_{0};
70 
71  void allocate(UInt_t n) override;
72  void deallocate() override;
73  void setStatus(TTree&, TString const&, utils::BranchList const&) override;
74  utils::BranchList getStatus(TTree&, TString const&) const override;
75  utils::BranchList getBranchNames(TString const& = "") const override;
76  void setAddress(TTree&, TString const&, utils::BranchList const& = {"*"}, Bool_t setStatus = kTRUE) override;
77  void book(TTree&, TString const&, utils::BranchList const& = {"*"}, Bool_t dynamic = kTRUE) override;
78  void releaseTree(TTree&, TString const&) override;
79  void resizeVectors_(UInt_t) override;
80  };
81 
84 
85  typedef Lepton base_type;
86 
87  Electron(char const* name = "");
88  Electron(Electron const&);
89  Electron(datastore&, UInt_t idx);
90  ~Electron();
91  Electron& operator=(Electron const&);
92 
93  static char const* typeName() { return "Electron"; }
94 
95  void print(std::ostream& = std::cout, UInt_t level = 1) const override;
96  void dump(std::ostream& = std::cout) const override;
97 
98  double m() const override { return 5.109989e-4; }
99  double combIso() const override { return chIso + std::max(nhIso + phIso - isoPUOffset, Float_t(0.)); }
100 
101  /* Lepton
102  Float_t& pfPt; ///< for E: Pt of the dR-closest PF candidate; for Mu: pfP4().pt()
103  Char_t& charge;
104  Bool_t& loose;
105  Bool_t& medium;
106  Bool_t& tight;
107  Bool_t& hltsafe;
108  Float_t& chIso;
109  Float_t& nhIso;
110  Float_t& phIso;
111  Float_t& puIso;
112  Float_t& dxy;
113  Float_t& dz;
114  Ref<PFCandBase> matchedPF;
115  Ref<GenParticleBase> matchedGen;
116  Ref<Vertex> vertex;
117  */
118  Float_t& chIsoPh;
119  Float_t& nhIsoPh;
120  Float_t& phIsoPh;
121  Float_t& ecalIso;
122  Float_t& hcalIso;
123  Float_t& trackIso;
124  Float_t& isoPUOffset;
125  Float_t& sieie;
126  Float_t& sipip;
127  Float_t& r9;
128  Float_t& dEtaInSeed;
129  Float_t& dPhiIn;
130  Float_t& eseed;
131  Float_t& hOverE;
132  Float_t& ecalE;
133  Float_t& trackP;
134  Float_t& regPt;
135  Float_t& smearedPt;
136  Float_t& mvaVal;
137  UShort_t& nMissingHits;
138  Bool_t& veto;
139  Bool_t& mvaWP90;
140  Bool_t& mvaWP80;
141  Bool_t& mvaWPLoose;
142  Bool_t& mvaIsoWP90;
143  Bool_t& mvaIsoWP80;
144  Bool_t& mvaIsoWPLoose;
145  Bool_t& conversionVeto;
146  Bool_t& tripleCharge;
147  Ref<SuperCluster> superCluster;
148 
149  /* BEGIN CUSTOM Electron.h.classdef */
150  /* END CUSTOM */
151 
152  static utils::BranchList getListOfBranches();
153 
154  void destructor(Bool_t recursive = kFALSE);
155 
156  protected:
158 
159  void doBook_(TTree&, TString const&, utils::BranchList const& = {"*"}) override;
160  void doInit_() override;
161  };
162 
165  typedef Ref<Electron> ElectronRef;
167 
168  /* BEGIN CUSTOM Electron.h.global */
169  /* END CUSTOM */
170 
171 }
172 
173 #endif
void print(std::ostream &=std::cout, UInt_t level=1) const override
Print the object content.
Definition: Electron.cc:596
Base class for fixed-size containers.
Definition: ArrayBase.h:13
A reference to an element in a container.
Definition: Ref.h:20
Base class for dynamic-size containers.
Definition: CollectionBase.h:16
Template class for fixed-size container implementations. Inherits from base_type::array_type of the e...
Definition: Array.h:20
void resizeVectors_(UInt_t) override
Override when there are vector members.
Definition: Electron.cc:307
List of branch names.
Definition: IOUtils.h:64
Definition: Lepton.h:15
Definition: Electron.h:15
Base class for all containers.
Definition: ContainerBase.h:18
Definition: Electron.h:13
void dump(std::ostream &=std::cout) const override
Dump the object content.
Definition: Electron.cc:622
Definition: Array.h:11
A vector of references to elements in a container.
Definition: RefVector.h:18
Definition: Lepton.h:17