PandaTree
GenParticleBase.h
1 #ifndef PandaTree_Objects_GenParticleBase_h
2 #define PandaTree_Objects_GenParticleBase_h
3 #include "Constants.h"
4 #include "Particle.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 
10 namespace panda {
11 
12  class GenParticleBase : public Particle {
13  public:
14  enum StatusFlag {
15  kIsPrompt,
16  kIsDecayedLeptonHadron,
17  kIsTauDecayProduct,
18  kIsPromptTauDecayProduct,
19  kIsDirectTauDecayProduct,
20  kIsDirectPromptTauDecayProduct,
21  kIsDirectHadronDecayProduct,
22  kIsHardProcess,
23  kFromHardProcess,
24  kIsHardProcessTauDecayProduct,
25  kIsDirectHardProcessTauDecayProduct,
26  kFromHardProcessBeforeFSR,
27  kIsFirstCopy,
28  kIsLastCopy,
29  kIsLastCopyBeforeFSR,
30  nStatusFlags
31  };
32 
33  static TString StatusFlagName[nStatusFlags];
34 
35  struct datastore : public Particle::datastore {
37  ~datastore() { deallocate(); }
38 
39  Int_t* pdgid{0};
40  Bool_t* finalState{0};
41  Bool_t* miniaodPacked{0};
42  UShort_t* statusFlags{0};
43  ContainerBase const* parentContainer_{0};
44  Short_t* parent_{0};
45 
46  void allocate(UInt_t n) override;
47  void deallocate() override;
48  void setStatus(TTree&, TString const&, utils::BranchList const&) override;
49  utils::BranchList getStatus(TTree&, TString const&) const override;
50  utils::BranchList getBranchNames(TString const& = "") const override;
51  void setAddress(TTree&, TString const&, utils::BranchList const& = {"*"}, Bool_t setStatus = kTRUE) override;
52  void book(TTree&, TString const&, utils::BranchList const& = {"*"}, Bool_t dynamic = kTRUE) override;
53  void releaseTree(TTree&, TString const&) override;
54  void resizeVectors_(UInt_t) override;
55  };
56 
59 
60  typedef Particle base_type;
61 
62  GenParticleBase(char const* name = "");
64  GenParticleBase(datastore&, UInt_t idx);
65  ~GenParticleBase();
66  GenParticleBase& operator=(GenParticleBase const&);
67 
68  static char const* typeName() { return "GenParticleBase"; }
69 
70  void print(std::ostream& = std::cout, UInt_t level = 1) const override;
71  void dump(std::ostream& = std::cout) const override;
72 
73  bool testFlag(StatusFlag f) const { return ((statusFlags >> f) & 1) == 1; }
74 
75  Int_t& pdgid;
76  Bool_t& finalState;
77  Bool_t& miniaodPacked;
78  UShort_t& statusFlags;
79  Ref<GenParticleBase> parent;
80 
81  /* BEGIN CUSTOM GenParticleBase.h.classdef */
82  /* END CUSTOM */
83 
84  static utils::BranchList getListOfBranches();
85 
86  void destructor(Bool_t recursive = kFALSE);
87 
88  protected:
90 
91  void doBook_(TTree&, TString const&, utils::BranchList const& = {"*"}) override;
92  void doInit_() override;
93  };
94 
99 
100  /* BEGIN CUSTOM GenParticleBase.h.global */
101  /* END CUSTOM */
102 
103 }
104 
105 #endif
Base class for fixed-size containers.
Definition: ArrayBase.h:13
A reference to an element in a container.
Definition: Ref.h:20
void dump(std::ostream &=std::cout) const override
Dump the object content.
Definition: GenParticleBase.cc:247
Bool_t & miniaodPacked
True if this came from a MINIAOD packed collection.
Definition: GenParticleBase.h:77
Definition: Particle.h:12
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
Definition: GenParticleBase.h:35
List of branch names.
Definition: IOUtils.h:64
void resizeVectors_(UInt_t) override
Override when there are vector members.
Definition: GenParticleBase.cc:125
Definition: Particle.h:14
Base class for all containers.
Definition: ContainerBase.h:18
Template class for dynamic-size container implementations. Inherits from base_type::collection_type o...
Definition: Collection.h:19
Definition: GenParticleBase.h:12
Definition: Array.h:11
A vector of references to elements in a container.
Definition: RefVector.h:18
void print(std::ostream &=std::cout, UInt_t level=1) const override
Print the object content.
Definition: GenParticleBase.cc:239