EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
NumSigmaPid.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file NumSigmaPid.h
1 
9 #ifndef INCLUDE_EICSMEAR_SMEAR_NUMSIGMAPID_H
10 #define INCLUDE_EICSMEAR_SMEAR_NUMSIGMAPID_H
11 
12 #include "eicsmear/smear/Smearer.h"
13 #include "PID.h"
14 
15 // Based on https://gitlab.com/preghenella/pid
16 
17 // A smearer needs to implement
18 // virtual void Smear(const erhic::VirtualParticle&, ParticleMCS&) = 0;
19 // And it has an Acceptance object.
20 
21 
22 
23 // Hello PID Fans:
24 //
25 // This is the base class for a simple set of objects that
26 // are used to evaluate various detector technology choices for the EIC.
27 //
28 // The idea is simple. Regardless of PID detector technology choice
29 // one must be able to answer some simple questions. This virtual base class
30 // organizes the method of asking and answering these simple questions to
31 // allow for efficient and apples-to-apples comparisons.
32 //
33 // The base class requires that any derived class procide responses to several queries:
34 // -- valid (double eta, double p );
35 // -- numSigma(double eta, double p, numSigmaPid::type PID);
36 // -- maxP (double eta, double numSigma, numSigmaPid::type PID);
37 // -- minP (double eta, double numSigma, numSigmaPid::type PID);
38 // -- name ();
39 //
40 // Here numSigmaPid::type is an enumerated constant set allowing one to choose pi-vs-k or k-vs-p etc...
41 //
42 // The detector types that inherit from numSigmaPid will clearly have parameters that define their
43 // performance and these are expected to be arguments of the constructor of those derived classes.
44 // For example:
45 // numSigmaPid* tof = new tofBarrel(radius, etaLow, etaHigh, sigmaT);
46 //
47 //
48 
49 #include <string>
50 #include <memory>
51 
52 namespace Smear {
53 
57  class NumSigmaPid : public Smearer {
58  public:
62  NumSigmaPid();
63 
67  virtual ~NumSigmaPid() {}
68 
73 
78  void SetNumSigmaType( const int i );
79 
84  int GetNumSigmaType( ) const;
85 
88  NumSigmaPid* Clone(const char* = "") const;
89 
92  bool valid (double eta, double p ) const;
93 
96  double maxP (double eta, double numSigma, PID::type PID) const;
97 
100  double minP (double eta, double numSigma, PID::type PID) const;
101 
104  std::string name() const;
105 
108  void description() const;
109 
110  protected:
111  std::shared_ptr<PID> ThePidObject;
112  int NumSigmaType=-1;
114  };
115 
116 }
117 #endif // INCLUDE_EICSMEAR_SMEAR_NUMSIGMAPID_H
118