CMS 3D CMS Logo

GeneratorTau.h
Go to the documentation of this file.
1 #ifndef RECOTAUTAG_TAUMVADISCRIMINATOR_GENERATORTAU
2 #define RECOTAUTAG_TAUMVADISCRIMINATOR_GENERATORTAU
3 
4 
5 /*
6  * Class GeneratorTau
7  *
8  * Tool for retrieving visible decay products and determining PDG-style tau decay mode
9  * from Pythia output (in CMS genParticle format)
10  *
11  * Author: Evan K. Friis, UC Davis; friis@physics.ucdavis.edu
12  *
13  * with code and contributions from Ricardo Vasquez Sierra and Christian Veelken, UC Davis
14  *
15  */
16 
24 #include <vector>
25 
27 
29  public:
30 
35 
36  //default constructor
38  theLeadTrack_ = nullptr;
39  };
40  GeneratorTau();
41 
42  ~GeneratorTau() override{};
43 
44  std::vector<const reco::Candidate*> getGenChargedPions() const;
45  std::vector<const reco::Candidate*> getGenGammas() const;
46  std::vector<const reco::Candidate*> getGenNeutralPions() const;
47  std::vector<const reco::Candidate*> getStableDecayProducts() const;
48  std::vector<const reco::Candidate*> getGenNu() const;
49 
51  bool isFinalStateTau() const {return aFinalStateTau_;};
52 
53  void init(); //called to update class after downcasting
54 
55  std::vector<LorentzVector> getChargedPions() const;
56  std::vector<LorentzVector> getGammas() const;
58  std::vector<LorentzVector> getVisibleFourVectors() const;
59  const reco::Candidate* getLeadTrack() const;
61 
62  float getVisNuAngle() const;
63  float getOpeningAngle(const std::vector<const reco::GenParticle*>& aCollection) const;
64  float getChargedOpeningAngle() const;
65  float getGammaOpeningAngle() const;
66 
67  void decayToPDGClassification(const reco::GenParticle*, std::vector<const reco::GenParticle *>&);
68  void computeStableDecayProducts(const reco::GenParticle*, std::vector<const reco::GenParticle *>&);
71  std::vector<LorentzVector> convertMCVectorToLorentzVectors(const std::vector<const reco::GenParticle*>& theList) const;
72 
73  private:
74 
77 
78 
79  //only fill these with stable particles
80  std::vector<const reco::GenParticle*> visibleDecayProducts_;
81  std::vector<const reco::GenParticle*> genChargedPions_;
82  std::vector<const reco::GenParticle*> genNeutralPions_;
83  std::vector<const reco::GenParticle*> genGammas_;
84  std::vector<const reco::GenParticle*> stableDecayProducts_;
85  std::vector<const reco::GenParticle*> genNus_;
87 
90 
91 };
92 
93 
94 #endif
tauDecayModeEnum theDecayMode_
Definition: GeneratorTau.h:88
std::vector< const reco::Candidate * > getGenGammas() const
std::vector< const reco::GenParticle * > genNus_
Definition: GeneratorTau.h:85
float getChargedOpeningAngle() const
Definition: GeneratorTau.cc:40
std::vector< const reco::GenParticle * > genNeutralPions_
Definition: GeneratorTau.h:82
std::vector< LorentzVector > convertMCVectorToLorentzVectors(const std::vector< const reco::GenParticle * > &theList) const
int aFinalStateTau_
Definition: GeneratorTau.h:89
const reco::GenParticle * theLeadTrack_
Definition: GeneratorTau.h:86
math::XYZTLorentzVector LorentzVector
Definition: GeneratorTau.h:26
bool isFinalStateTau() const
Definition: GeneratorTau.h:51
tauDecayModeEnum computeDecayMode(const reco::GenParticle *)
Definition: GeneratorTau.cc:48
std::vector< LorentzVector > getChargedPions() const
std::vector< LorentzVector > getVisibleFourVectors() const
tauDecayModeEnum getDecayType() const
Definition: GeneratorTau.h:50
LorentzVector getVisibleFourVector() const
static std::string const input
Definition: EdmProvDump.cc:44
XYZTLorentzVectorD XYZTLorentzVector
Lorentz vector with cylindrical internal representation using pseudorapidity.
Definition: LorentzVector.h:29
GeneratorTau(const reco::GenParticle &input)
Definition: GeneratorTau.h:37
float getGammaOpeningAngle() const
Definition: GeneratorTau.cc:44
LorentzVector convertHepMCFourVec(const reco::GenParticle *theParticle)
DeltaR< LorentzVector > deltaRFinder
Definition: GeneratorTau.h:76
std::vector< const reco::GenParticle * > genGammas_
Definition: GeneratorTau.h:83
Angle< LorentzVector > angleFinder
Definition: GeneratorTau.h:75
float getVisNuAngle() const
Definition: GeneratorTau.cc:3
std::vector< const reco::Candidate * > getStableDecayProducts() const
std::vector< LorentzVector > getGammas() const
std::vector< const reco::Candidate * > getGenNeutralPions() const
void decayToPDGClassification(const reco::GenParticle *, std::vector< const reco::GenParticle * > &)
Return list of stable & "semi-stable" tau decay products (e.g. decay the rhos)
~GeneratorTau() override
Definition: GeneratorTau.h:42
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:37
const reco::Candidate * getLeadTrack() const
Definition: GeneratorTau.cc:9
void computeStableDecayProducts(const reco::GenParticle *, std::vector< const reco::GenParticle * > &)
std::vector< const reco::GenParticle * > stableDecayProducts_
Definition: GeneratorTau.h:84
std::vector< const reco::Candidate * > getGenChargedPions() const
const reco::GenParticle * findLeadTrack()
Definition: GeneratorTau.cc:13
std::vector< const reco::Candidate * > getGenNu() const
std::vector< const reco::GenParticle * > genChargedPions_
Definition: GeneratorTau.h:81
std::vector< const reco::GenParticle * > visibleDecayProducts_
Definition: GeneratorTau.h:80
float getOpeningAngle(const std::vector< const reco::GenParticle * > &aCollection) const
Definition: GeneratorTau.cc:28