PandaTree
GenParticle.h
1 #ifndef PandaTree_Objects_GenParticle_h
2 #define PandaTree_Objects_GenParticle_h
3 #include "Constants.h"
4 #include "GenParticleBase.h"
5 #include "PackedMomentumMixin.h"
6 #include "../../Framework/interface/Array.h"
7 #include "../../Framework/interface/Collection.h"
8 #include "../../Framework/interface/Ref.h"
9 #include "../../Framework/interface/RefVector.h"
10 
11 namespace panda {
12 
13  class UnpackedGenParticle;
14 
16  public:
19  ~datastore() { deallocate(); }
20 
21  /* GenParticleBase
22  Int_t* pdgid{0};
23  Bool_t* finalState{0};
24  Bool_t* miniaodPacked{0};
25  UShort_t* statusFlags{0};
26  ContainerBase const* parentContainer_{0};
27  Short_t* parent_{0};
28  */
29  /* PackedMomentumMixin
30  UShort_t* packedPt{0};
31  Short_t* packedEta{0};
32  Short_t* packedPhi{0};
33  UShort_t* packedM{0};
34  */
35 
36  void allocate(UInt_t n) override;
37  void deallocate() override;
38  void setStatus(TTree&, TString const&, utils::BranchList const&) override;
39  utils::BranchList getStatus(TTree&, TString const&) const override;
40  utils::BranchList getBranchNames(TString const& = "") const override;
41  void setAddress(TTree&, TString const&, utils::BranchList const& = {"*"}, Bool_t setStatus = kTRUE) override;
42  void book(TTree&, TString const&, utils::BranchList const& = {"*"}, Bool_t dynamic = kTRUE) override;
43  void releaseTree(TTree&, TString const&) override;
44  void resizeVectors_(UInt_t) override;
45  };
46 
49 
50  typedef GenParticleBase base_type;
51 
52  GenParticle(char const* name = "");
53  GenParticle(GenParticle const&);
54  GenParticle(datastore&, UInt_t idx);
55  ~GenParticle();
56  GenParticle& operator=(GenParticle const&);
57 
58  static char const* typeName() { return "GenParticle"; }
59 
60  void print(std::ostream& = std::cout, UInt_t level = 1) const override;
61  void dump(std::ostream& = std::cout) const override;
62 
63  double pt() const override { unpack_(); return pt_; }
64  double eta() const override { unpack_(); return eta_; }
65  double phi() const override { unpack_(); return phi_; }
66  double m() const override { unpack_(); return mass_; }
67  void setPtEtaPhiM(double pt, double eta, double phi, double m) override { setPtEtaPhiMPacked_(pt, eta, phi, m); }
68  void setXYZE(double px, double py, double pz, double e) override { setXYZEPacked_(px, py, pz, e); }
69 
70  /* GenParticleBase
71  Int_t& pdgid;
72  Bool_t& finalState;
73  Bool_t& miniaodPacked; ///< True if this came from a MINIAOD packed collection
74  UShort_t& statusFlags;
75  Ref<GenParticleBase> parent;
76  */
77  /* PackedMomentumMixin
78  UShort_t& packedPt;
79  Short_t& packedEta;
80  Short_t& packedPhi;
81  UShort_t& packedM;
82  */
83 
84  /* BEGIN CUSTOM GenParticle.h.classdef */
85  GenParticle& operator=(UnpackedGenParticle const&);
86  /* END CUSTOM */
87 
88  static utils::BranchList getListOfBranches();
89 
90  void destructor(Bool_t recursive = kFALSE);
91 
92  protected:
94 
95  void doBook_(TTree&, TString const&, utils::BranchList const& = {"*"}) override;
96  void doInit_() override;
97  };
98 
103 
104  /* BEGIN CUSTOM GenParticle.h.global */
105  /* END CUSTOM */
106 
107 }
108 
109 #endif
void print(std::ostream &=std::cout, UInt_t level=1) const override
Print the object content.
Definition: GenParticle.cc:194
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
Definition: UnpackedGenParticle.h:15
Template class for fixed-size container implementations. Inherits from base_type::array_type of the e...
Definition: Array.h:20
Definition: GenParticleBase.h:35
Definition: PackedMomentumMixin.h:7
List of branch names.
Definition: IOUtils.h:64
Definition: GenParticle.h:17
Definition: PackedMomentumMixin.h:9
Definition: GenParticleBase.h:12
Definition: GenParticle.h:15
void dump(std::ostream &=std::cout) const override
Dump the object content.
Definition: GenParticle.cc:206
Definition: Array.h:11
A vector of references to elements in a container.
Definition: RefVector.h:18
void resizeVectors_(UInt_t) override
Override when there are vector members.
Definition: GenParticle.cc:99