EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
ParticleIdentifier.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file ParticleIdentifier.h
1 
10 #ifndef INCLUDE_EICSMEAR_ERHIC_PARTICLEIDENTIFIER_H_
11 #define INCLUDE_EICSMEAR_ERHIC_PARTICLEIDENTIFIER_H_
12 
13 #include <cmath>
14 #include <limits>
15 #include <vector>
16 
20 
26  public:
32  ParticleIdentifier(const int leptonPdg = ~unsigned(0)/2);
33 
34  virtual ~ParticleIdentifier() { }
35 
39  virtual bool isBeamLepton(const erhic::VirtualParticle&) const;
40 
44  virtual bool isBeamNucleon(const erhic::VirtualParticle&) const;
45 
49  virtual bool isScatteredLepton(const erhic::VirtualParticle&) const;
50 
54  virtual bool IsVirtualPhoton(const erhic::VirtualParticle&) const;
55 
59  virtual bool SkipParticle(const erhic::VirtualParticle&) const;
60 
64  virtual void SetLeptonBeamPdgCode(int pdg);
65 
69  virtual int GetLeptonBeamPdgCode() const;
70 
78  virtual bool SetChargedCurrent(bool isChargedCurrent);
79 
87  static bool IdentifyBeams(const erhic::VirtualEvent&, BeamParticles&);
88 
99  static bool IdentifyBeams(const erhic::VirtualEvent&,
100  std::vector<const erhic::VirtualParticle*>&);
101 
102  protected:
114  Int_t DetermineScatteredType(Int_t);
115 
119 };
120 
122  return mLeptonBeamPdgCode;
123 }
124 
125 #endif // INCLUDE_EICSMEAR_ERHIC_PARTICLEIDENTIFIER_H_