ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
PID.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file PID.h
1 #ifndef __PID_H__
2 #define __PID_H__
3 
4 //
5 // Hello PID Fans:
6 //
7 // This is the base class for a simple set of objects that
8 // are used to evaluate various detector technology choices for the EIC.
9 //
10 // The idea is simple. Regardless of PID detector technology choice
11 // one must be able to answer some simple questions. This virtual base class
12 // organizes the method of asking and answering these simple questions to
13 // allow for efficient and apples-to-apples comparisons.
14 //
15 // The base class requires that any derived class procide responses to several queries:
16 // -- valid (double eta, double p );
17 // -- numSigma(double eta, double p, PID::type PID);
18 // -- maxP (double eta, double numSigma, PID::type PID);
19 // -- minP (double eta, double numSigma, PID::type PID);
20 // -- name ();
21 //
22 // Here PID::type is an enumerated constant set allowing one to choose pi-vs-k or k-vs-p etc...
23 //
24 // The detector types that inherit from PID will clearly have parameters that define their
25 // performance and these are expected to be arguments of the constructor of those derived classes.
26 // For example:
27 // PID* tof = new tofBarrel(radius, etaLow, etaHigh, sigmaT);
28 //
29 //
30 
31 #include <string>
32 
33 class PID
34 {
35 public:
36  PID() {}
37  virtual ~PID() {}
38 
39  enum type {pi_k , k_p};
40 
41  virtual bool valid (double eta, double p )=0;
42  virtual double maxP (double eta, double p, double numSigma, PID::type PID)=0;
43  virtual double minP (double eta, double numSigma, PID::type PID)=0;
44  virtual std::string name()=0;
45  virtual void description()=0;
46 
47 protected:
48 
49 };
50 
51 #endif /* __PID_H__ */