EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Device.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file Device.h
1 
10 #ifndef INCLUDE_EICSMEAR_SMEAR_DEVICE_H_
11 #define INCLUDE_EICSMEAR_SMEAR_DEVICE_H_
12 
13 #include <cmath>
14 #include <vector>
15 
16 #include <Math/ParamFunctor.h> // For ROOT::TMath::ParamFunctor
17 #include <TF1.h>
18 #include <TF2.h>
19 #include <TRandom3.h>
20 #include <TString.h>
21 
24 #include "eicsmear/smear/Smear.h"
25 #include "eicsmear/smear/Smearer.h"
26 
27 class TRandom3;
28 
29 namespace erhic {
30 
31 class VirtualParticle;
32 
33 } // namespace erhic
34 
35 namespace Smear {
36 
37 class FormulaString;
38 class ParticleMCS;
39 
44 class Device : public Smearer {
45  public:
62  Device(KinType = kE, const TString& formula = "0", EGenre = kAll);
63 
71  Device(const TString&, const TString& resolution = "0", EGenre = kAll);
72 
76  Device(const Device&);
77 
81  virtual ~Device();
82 
88  virtual Device* Clone(const char* = "") const;
89 
102  virtual void Smear(const erhic::VirtualParticle&, ParticleMCS&);
103 
108  virtual void SetDistribution(const Distributor&);
109 
113  virtual void Print(Option_t* = "") const;
114 
115  protected:
116  bool Init(const TString&, const TString&, int);
117 
121  std::vector<Smear::KinType> mDimensions;
122 
124 
125  private:
126  // Assignment is not supported
127  Device& operator=(const Device&) { return *this; }
128 
129  ClassDef(Smear::Device, 1)
130 };
131 
132 inline void Device::SetDistribution(const Distributor& d) {
133  mDistribution = d;
134 }
135 
136 } // namespace Smear
137 
138 #endif // INCLUDE_EICSMEAR_SMEAR_DEVICE_H_