ATTPCROOT  0.3.0-alpha
A ROOT-based framework for analyzing data from active target detectors
AtGenfit.h
Go to the documentation of this file.
1 #ifndef ATGENFIT_H
2 #define ATGENFIT_H
3 
4 #include "AtFitter.h"
5 
6 #include <Rtypes.h>
7 #include <TMath.h> // for DegToRad
8 #include <Track.h>
9 
10 #include <memory>
11 #include <string>
12 #include <utility>
13 #include <vector>
14 
15 class AtHitCluster;
16 class AtTrack;
17 class TBuffer;
18 class TClass;
19 class TClonesArray;
20 class TMemberInspector;
21 
22 namespace genfit {
23 class AbsKalmanFitter;
24 class AbsMeasurement;
25 class AtSpacepointMeasurement;
26 template <class hit_T, class measurement_T>
28 template <class measurement_T>
30 } // namespace genfit
31 
32 namespace AtFITTER {
33 
34 class AtGenfit : public AtFitter {
35 private:
36  std::shared_ptr<genfit::AbsKalmanFitter> fKalmanFitter;
37  TClonesArray *fGenfitTrackArray;
38  TClonesArray *fHitClusterArray;
39  Int_t fPDGCode{2212}; //<! Particle PGD code
40  Int_t fTPCDetID{0};
41  Int_t fCurrentDirection{-1};
42  Float_t fMaxBrho; //<! Max Brho allowed in Tm
43  Float_t fMinBrho; //<! Min Brho allowed in Tm
44  Int_t fMaxIterations; //<! Max iterations for fitter
45  Int_t fMinIterations; //<! Min iterations for fitter
46  Float_t fMagneticField; //<! Constant magnetic field along Z in T
47  Float_t fMass{1.00727647}; //<! Particle mass in atomic mass unit
48  Int_t fAtomicNumber{1}; //<! Particle Atomic number Z
49  Float_t fNumFitPoints{0.90}; //<! % of processed track points for fit
50  Int_t fVerbosity{0}; //<! Fit verbosity
51  std::string fEnergyLossFile; //<! Energy loss file
52  Bool_t fSimulationConv{false}; //<! Switch to simulation convention
53  Float_t fGasMediumDensity{}; //<! Medium density in mg/cm3
54  Double_t fPhiOrientation{0}; //<! Phi angle orientation for fit
55  std::string fIonName; //<! Name of ion to fit
56 
59 
60  std::vector<Int_t> *fPDGCandidateArray{};
61 
62 public:
63  AtGenfit(Float_t magfield, Float_t minbrho, Float_t maxbrho, std::string eLossFile, Float_t gasMediumDensity,
64  Int_t pdg = 2212, Int_t minit = 5, Int_t maxit = 20);
65  ~AtGenfit();
66 
67  genfit::Track *FitTracks(AtTrack *track) override;
68  void Init() override;
69 
70  inline void SetMinIterations(Int_t minit) { fMinIterations = minit; }
71  inline void SetMaxIterations(Int_t maxit) { fMaxIterations = maxit; }
72  inline void SetMinBrho(Float_t minbrho) { fMinBrho = minbrho; }
73  inline void SetMaxBrho(Float_t maxbrho) { fMaxBrho = maxbrho; }
74  inline void SetMagneticField(Float_t magfield) { fMagneticField = 10.0 * magfield; }
75  inline void SetPDGCode(Int_t pdgcode) { fPDGCode = pdgcode; }
76  inline void SetMass(Float_t mass) { fMass = mass; }
77  inline void SetAtomicNumber(Int_t znumber) { fAtomicNumber = znumber; }
78  inline void SetNumFitPoints(Float_t points) { fNumFitPoints = points; }
79  inline void SetVerbosityLevel(Int_t verbosity) { fVerbosity = verbosity; }
80  inline void SetEnergyLossFile(std::string file) { fEnergyLossFile = file; }
81  inline void SetSimulationConvention(Bool_t simconv) { fSimulationConv = simconv; }
82  inline void SetGasMediumDensity(Float_t mediumDensity) { fGasMediumDensity = mediumDensity; }
83  inline void RotatePhi(Double_t phi) { fPhiOrientation = phi; }
84  inline void SetIonName(std::string ionName) { fIonName = std::move(ionName); }
85 
86  TClonesArray *GetGenfitTrackArray();
87  Int_t GetPDGCode() { return fPDGCode; }
88  std::string &GetIonName() { return fIonName; }
89 
90 protected:
91  inline bool IsForwardTrack(double theta) { return theta < 90.0 * TMath::DegToRad(); }
93 };
94 
95 } // namespace AtFITTER
96 
97 #endif
AtFITTER::AtGenfit::FitTracks
genfit::Track * FitTracks(AtTrack *track) override
Definition: AtGenfit.cxx:156
AtFITTER::AtGenfit::IsForwardTrack
bool IsForwardTrack(double theta)
Definition: AtGenfit.h:91
AtFITTER::AtGenfit::Init
void Init() override
Definition: AtGenfit.cxx:137
AtFITTER::AtGenfit::SetEnergyLossFile
void SetEnergyLossFile(std::string file)
Definition: AtGenfit.h:80
AtFITTER::AtGenfit::SetIonName
void SetIonName(std::string ionName)
Definition: AtGenfit.h:84
AtFITTER::AtGenfit::SetMagneticField
void SetMagneticField(Float_t magfield)
Definition: AtGenfit.h:74
AtHitCluster
: Class representing a cluster of hits that arise from the same deposition of charge in space....
Definition: AtHitCluster.h:37
AtFITTER::AtGenfit::SetNumFitPoints
void SetNumFitPoints(Float_t points)
Definition: AtGenfit.h:78
genfit
Definition: AtFitter.h:20
AtFITTER::AtFitter
Definition: AtFitter.h:26
AtFITTER
Definition: AtFitter.h:24
AtFITTER::AtGenfit::SetMass
void SetMass(Float_t mass)
Definition: AtGenfit.h:76
AtFitter.h
genfit::MeasurementProducer
Definition: AtGenfit.h:27
AtFITTER::AtGenfit::SetGasMediumDensity
void SetGasMediumDensity(Float_t mediumDensity)
Definition: AtGenfit.h:82
genfit::MeasurementFactory
Definition: AtGenfit.h:29
AtFITTER::AtGenfit::SetMinIterations
void SetMinIterations(Int_t minit)
Definition: AtGenfit.h:70
AtFITTER::AtGenfit::GetGenfitTrackArray
TClonesArray * GetGenfitTrackArray()
Definition: AtGenfit.cxx:147
AtFITTER::AtGenfit::AtGenfit
AtGenfit(Float_t magfield, Float_t minbrho, Float_t maxbrho, std::string eLossFile, Float_t gasMediumDensity, Int_t pdg=2212, Int_t minit=5, Int_t maxit=20)
Definition: AtGenfit.cxx:52
AtFITTER::AtGenfit::RotatePhi
void RotatePhi(Double_t phi)
Definition: AtGenfit.h:83
AtFITTER::AtGenfit::SetMinBrho
void SetMinBrho(Float_t minbrho)
Definition: AtGenfit.h:72
AtFITTER::AtGenfit::SetMaxBrho
void SetMaxBrho(Float_t maxbrho)
Definition: AtGenfit.h:73
AtTrack
Definition: AtTrack.h:25
AtFITTER::AtGenfit
Definition: AtGenfit.h:34
AtFITTER::AtGenfit::SetPDGCode
void SetPDGCode(Int_t pdgcode)
Definition: AtGenfit.h:75
AtFITTER::AtGenfit::~AtGenfit
~AtGenfit()
Definition: AtGenfit.cxx:127
AtFITTER::AtGenfit::GetPDGCode
Int_t GetPDGCode()
Definition: AtGenfit.h:87
AtFITTER::AtGenfit::GetIonName
std::string & GetIonName()
Definition: AtGenfit.h:88
AtFITTER::AtGenfit::ClassDefOverride
ClassDefOverride(AtGenfit, 1)
AtFITTER::AtGenfit::SetVerbosityLevel
void SetVerbosityLevel(Int_t verbosity)
Definition: AtGenfit.h:79
AtFITTER::AtGenfit::SetAtomicNumber
void SetAtomicNumber(Int_t znumber)
Definition: AtGenfit.h:77
AtFITTER::AtGenfit::SetSimulationConvention
void SetSimulationConvention(Bool_t simconv)
Definition: AtGenfit.h:81
AtFITTER::AtGenfit::SetMaxIterations
void SetMaxIterations(Int_t maxit)
Definition: AtGenfit.h:71