PandaTree
GenJet.h
1 #ifndef PandaTree_Objects_GenJet_h
2 #define PandaTree_Objects_GenJet_h
3 #include "Constants.h"
4 #include "ParticleM.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 "GenParticleBase.h"
10 
11 namespace panda {
12 
13  class GenJet : public ParticleM {
14  public:
15  struct datastore : public ParticleM::datastore {
17  ~datastore() { deallocate(); }
18 
19  Short_t* pdgid{0};
20  Short_t* partonFlavor{0};
21  Short_t* numB{0};
22  Short_t* numC{0};
23  ContainerBase const* matchedBHadronsContainer_{0};
24  std::vector<std::vector<Short_t>>* matchedBHadrons_{0};
25  ContainerBase const* matchedCHadronsContainer_{0};
26  std::vector<std::vector<Short_t>>* matchedCHadrons_{0};
27 
28  void allocate(UInt_t n) override;
29  void deallocate() override;
30  void setStatus(TTree&, TString const&, utils::BranchList const&) override;
31  utils::BranchList getStatus(TTree&, TString const&) const override;
32  utils::BranchList getBranchNames(TString const& = "") const override;
33  void setAddress(TTree&, TString const&, utils::BranchList const& = {"*"}, Bool_t setStatus = kTRUE) override;
34  void book(TTree&, TString const&, utils::BranchList const& = {"*"}, Bool_t dynamic = kTRUE) override;
35  void releaseTree(TTree&, TString const&) override;
36  void resizeVectors_(UInt_t) override;
37  };
38 
39  typedef Array<GenJet> array_type;
41 
42  typedef ParticleM base_type;
43 
44  GenJet(char const* name = "");
45  GenJet(GenJet const&);
46  GenJet(datastore&, UInt_t idx);
47  ~GenJet();
48  GenJet& operator=(GenJet const&);
49 
50  static char const* typeName() { return "GenJet"; }
51 
52  void print(std::ostream& = std::cout, UInt_t level = 1) const override;
53  void dump(std::ostream& = std::cout) const override;
54 
55  Short_t& pdgid;
56  Short_t& partonFlavor;
57  Short_t& numB;
58  Short_t& numC;
59  RefVector<GenParticleBase> matchedBHadrons;
60  RefVector<GenParticleBase> matchedCHadrons;
61 
62  /* BEGIN CUSTOM GenJet.h.classdef */
63  /* END CUSTOM */
64 
65  static utils::BranchList getListOfBranches();
66 
67  void destructor(Bool_t recursive = kFALSE);
68 
69  protected:
70  GenJet(ArrayBase*);
71 
72  void doBook_(TTree&, TString const&, utils::BranchList const& = {"*"}) override;
73  void doInit_() override;
74  };
75 
76  typedef Array<GenJet> GenJetArray;
78  typedef Ref<GenJet> GenJetRef;
80 
81  /* BEGIN CUSTOM GenJet.h.global */
82  /* END CUSTOM */
83 
84 }
85 
86 #endif
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
void print(std::ostream &=std::cout, UInt_t level=1) const override
Print the object content.
Definition: GenJet.cc:238
Template class for fixed-size container implementations. Inherits from base_type::array_type of the e...
Definition: Array.h:20
List of branch names.
Definition: IOUtils.h:64
Definition: GenJet.h:13
void dump(std::ostream &=std::cout) const override
Dump the object content.
Definition: GenJet.cc:246
Short_t & pdgid
Filled with hadron flavor.
Definition: GenJet.h:55
Definition: GenJet.h:15
Base class for all containers.
Definition: ContainerBase.h:18
Definition: ParticleM.h:13
Definition: ParticleM.h:15
Definition: Array.h:11
void resizeVectors_(UInt_t) override
Override when there are vector members.
Definition: GenJet.cc:115
A vector of references to elements in a container.
Definition: RefVector.h:18