ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtClusterize.h
Go to the documentation of this file.
1 #ifndef ATCLUSTERIZE_H
2 #define ATCLUSTERIZE_H
3 
4 #include <Math/Point3D.h>
5 #include <Math/Point3Dfwd.h> // for XYZPoint
6 #include <Math/Vector3D.h>
7 #include <Math/Vector3Dfwd.h>
8 
9 #include <cmath> // for double_t
10 #include <cstdint> // for uint64_t
11 #include <memory> // for unique_ptr
12 #include <string>
13 #include <vector>
14 class AtDigiPar;
15 class AtMCPoint;
16 class AtSimulatedPoint;
17 class TClonesArray;
18 
24 class AtClusterize {
25 protected:
28  using SimPointPtr = std::unique_ptr<AtSimulatedPoint>;
29 
30  double fEIonize{};
31  double fFano{};
32  double fVelDrift{};
33  double fCoefT{};
34  double fCoefL{};
35  double fDetPadPlane{};
36 
37  static thread_local XYZPoint fPrevPoint;
38  static thread_local int fTrackID;
39 
40 public:
41  std::vector<SimPointPtr> ProcessEvent(const TClonesArray &fMCPointArray);
42  virtual void GetParameters(const AtDigiPar *fPar);
43  virtual std::string GetSavedClassName() const { return "AtSimulatedPoint"; }
44  virtual void FillTClonesArray(TClonesArray &array, std::vector<SimPointPtr> &vec);
45  virtual std::shared_ptr<AtClusterize> Clone() const { return std::make_shared<AtClusterize>(*this); }
46 
47 private:
48  XYZPoint applyDiffusion(const XYZPoint &loc, double_t sigTrans, double sigLong);
49 
50 protected:
51  virtual std::vector<SimPointPtr> processPoint(AtMCPoint &mcPoint, int pointID = -1);
52 
53  void setNewTrack();
54  double getTransverseDiffusion(double driftTime); // in mm
55  double getLongitudinalDiffusion(double driftTime); // in us
56  uint64_t getNumberOfElectronsGenerated(const AtMCPoint &mcPoint);
58 };
59 
60 #endif //#ifndef ATCLUSTERIZE_H
AtClusterize::fEIonize
double fEIonize
Effective ionization energy of gas. [eV].
Definition: AtClusterize.h:30
AtClusterize::Clone
virtual std::shared_ptr< AtClusterize > Clone() const
Definition: AtClusterize.h:45
XYZVector
ROOT::Math::XYZVector XYZVector
Definition: AtFindVertex.h:20
AtClusterize::getCurrentPointLocation
XYZPoint getCurrentPointLocation(const AtMCPoint &mcPoint)
Definition: AtClusterize.cxx:122
AtClusterize::fPrevPoint
static thread_local XYZPoint fPrevPoint
The previous point we recorded charge.
Definition: AtClusterize.h:37
AtClusterize::fTrackID
static thread_local int fTrackID
The current track ID.
Definition: AtClusterize.h:38
XYZPoint
ROOT::Math::XYZPoint XYZPoint
Definition: AtPatternCircle2D.h:18
AtSimulatedPoint
Definition: AtSimulatedPoint.h:16
AtClusterize::processPoint
virtual std::vector< SimPointPtr > processPoint(AtMCPoint &mcPoint, int pointID=-1)
Definition: AtClusterize.cxx:60
AtClusterize::getLongitudinalDiffusion
double getLongitudinalDiffusion(double driftTime)
Definition: AtClusterize.cxx:101
AtClusterize::setNewTrack
void setNewTrack()
AtClusterize::fCoefT
double fCoefT
Transversal diffusion coefficient. [cm^2/us].
Definition: AtClusterize.h:33
AtDigiPar
Definition: AtDigiPar.h:14
AtClusterize::GetParameters
virtual void GetParameters(const AtDigiPar *fPar)
Definition: AtClusterize.cxx:22
AtClusterize::SimPointPtr
std::unique_ptr< AtSimulatedPoint > SimPointPtr
Definition: AtClusterize.h:28
AtClusterize::fCoefL
double fCoefL
Longitudinal diffusion coefficient. [cm^2/us].
Definition: AtClusterize.h:34
AtClusterize::FillTClonesArray
virtual void FillTClonesArray(TClonesArray &array, std::vector< SimPointPtr > &vec)
Definition: AtClusterize.cxx:40
AtClusterize::XYZVector
ROOT::Math::XYZVector XYZVector
Definition: AtClusterize.h:26
AtClusterize
Definition: AtClusterize.h:24
AtClusterize::XYZPoint
ROOT::Math::XYZPoint XYZPoint
Definition: AtClusterize.h:27
AtClusterize::ProcessEvent
std::vector< SimPointPtr > ProcessEvent(const TClonesArray &fMCPointArray)
Definition: AtClusterize.cxx:48
AtClusterize::fDetPadPlane
double fDetPadPlane
Position of the pad plane with respect to the entrance [mm].
Definition: AtClusterize.h:35
AtClusterize::GetSavedClassName
virtual std::string GetSavedClassName() const
Definition: AtClusterize.h:43
AtMCPoint
Definition: AtMCPoint.h:26
AtClusterize::getNumberOfElectronsGenerated
uint64_t getNumberOfElectronsGenerated(const AtMCPoint &mcPoint)
Definition: AtClusterize.cxx:114
AtClusterize::fVelDrift
double fVelDrift
Drift velocity of electron in gas. [cm/us].
Definition: AtClusterize.h:32
AtClusterize::getTransverseDiffusion
double getTransverseDiffusion(double driftTime)
Definition: AtClusterize.cxx:109
AtClusterize::fFano
double fFano
Fano factor of the gas.
Definition: AtClusterize.h:31