SND@LHC Software
Loading...
Searching...
No Matches
Scifi.h
Go to the documentation of this file.
1#ifndef Scifi_H
2#define Scifi_H
3
4
5#include "FairModule.h" // for FairModule
6#include "FairDetector.h"
7#include "SNDLHCEventHeader.h"
8#include "Rtypes.h" // for ShipMuonShield::Class, Bool_t, etc
9
10#include <string> // for string
11
12#include "TVector3.h"
13#include "TLorentzVector.h"
14
15class ScifiPoint;
16class FairVolume;
17class TClonesArray;
18
19class Scifi : public FairDetector
20{
21public:
22 Scifi(const char* name, Bool_t Active, const char* Title = "Scifi");
23 Scifi();
24 virtual ~Scifi();
25
26
28 void ConstructGeometry();
29
31 void GetPosition(Int_t id, TVector3& vLeft, TVector3& vRight); // or top and bottom
33 TVector3 GetLocalPos(Int_t id, TVector3* glob);
35 void GetSiPMPosition(Int_t SiPMChan, TVector3& A, TVector3& B) ;
36 Double_t GetCorrectedTime(Int_t fDetectorID, Double_t rawTime, Double_t L);
37 Double_t ycross(Double_t a,Double_t R,Double_t x);
38 Double_t integralSqrt(Double_t ynorm);
39 Double_t fraction(Double_t R,Double_t x,Double_t y);
40 Double_t area(Double_t a,Double_t R,Double_t xL,Double_t xR);
41 void SiPMmapping();
42 std::map<Int_t,std::map<Int_t,std::array<float, 2>>> GetSiPMmap(){return fibresSiPM;}
43 std::map<Int_t,std::map<Int_t,std::array<float, 2>>> GetFibresMap(){return siPMFibres;}
44 std::map<Int_t,float> GetSiPMPos(){return SiPMPos;}
45 virtual void SiPMOverlap();
46 void SetConfPar(TString name, Float_t value){conf_floats[name]=value;}
47 void SetConfPar(TString name, Int_t value){conf_ints[name]=value;}
48 void SetConfPar(TString name, TString value){conf_strings[name]=value;}
49 void SetConfPar(TString name, std::vector<float> values){conf_vectors[name]=values;}
50 Float_t GetConfParF(TString name){return conf_floats[name];}
51 Int_t GetConfParI(TString name){return conf_ints[name];}
52 TString GetConfParS(TString name){return conf_strings[name];}
53 std::vector<Float_t> GetConfParVector(TString name){return conf_vectors[name];}
55
57 virtual void Initialize();
58
62 virtual Bool_t ProcessHits( FairVolume* v=0);
63
65 virtual void Register();
66
68 virtual TClonesArray* GetCollection(Int_t iColl) const ;
69
71 virtual void Reset();
72
76 ScifiPoint* AddHit(Int_t trackID, Int_t detID,
77 TVector3 pos, TVector3 mom,
78 Double_t time, Double_t length,
79 Double_t eLoss, Int_t pdgCode);
80
85 virtual void CopyClones( TClonesArray* cl1, TClonesArray* cl2 ,
86 Int_t offset) {;}
87 virtual void SetSpecialPhysicsCuts() {;}
88 virtual void EndOfEvent();
89 virtual void FinishPrimary() {;}
90 virtual void FinishRun() {;}
91 virtual void BeginPrimary() {;}
92 virtual void PostTrack() {;}
93 virtual void PreTrack() {;}
94 virtual void BeginEvent() {;}
95
96
97 Scifi(const Scifi&);
99
100 ClassDef(Scifi,3)
101
102private:
103
107 Int_t fTrackID;
108 Int_t fVolumeID;
109 TLorentzVector fPos;
110 TLorentzVector fMom;
111 Double32_t fTime;
112 Double32_t fLength;
113 Double32_t fELoss;
114 std::map<Int_t,std::map<Int_t,std::array<float, 2>>> fibresSiPM;
115 std::map<Int_t,std::map<Int_t,std::array<float, 2>>> siPMFibres;
116 std::map<Int_t,float> SiPMPos;
120 std::map<TString,Float_t> conf_floats;
121 std::map<TString,Int_t> conf_ints;
122 std::map<TString,TString> conf_strings;
123 std::map<TString,std::vector<Float_t>> conf_vectors;
125
126 // Vector to store runs covered in the geometry file.
133protected:
134
135 Int_t InitMedium(const char* name);
136
137};
138
139#endif
Definition Scifi.h:20
TVector3 GetLocalPos(Int_t id, TVector3 *glob)
Definition Scifi.cxx:709
Double32_t fTime
momentum at entrance
Definition Scifi.h:111
virtual void CopyClones(TClonesArray *cl1, TClonesArray *cl2, Int_t offset)
Definition Scifi.h:85
std::map< Int_t, float > SiPMPos
inverse mapping
Definition Scifi.h:116
std::map< Int_t, float > GetSiPMPos()
Definition Scifi.h:44
ScifiPoint * AddHit(Int_t trackID, Int_t detID, TVector3 pos, TVector3 mom, Double_t time, Double_t length, Double_t eLoss, Int_t pdgCode)
Definition Scifi.cxx:962
virtual void BeginEvent()
Definition Scifi.h:94
void GetSiPMPosition(Int_t SiPMChan, TVector3 &A, TVector3 &B)
Definition Scifi.cxx:727
Double32_t fELoss
length
Definition Scifi.h:113
TString last_time_alignment_tag
Definition Scifi.h:130
void SetConfPar(TString name, Int_t value)
Definition Scifi.h:47
int last_run_time
Definition Scifi.h:129
virtual void EndOfEvent()
Definition Scifi.cxx:931
virtual void Register()
Definition Scifi.cxx:937
virtual TClonesArray * GetCollection(Int_t iColl) const
Definition Scifi.cxx:950
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > siPMFibres
mapping of fibres to SiPM channels
Definition Scifi.h:115
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > GetFibresMap()
Definition Scifi.h:43
virtual Bool_t ProcessHits(FairVolume *v=0)
Definition Scifi.cxx:551
virtual void SetSpecialPhysicsCuts()
Definition Scifi.h:87
virtual void Reset()
Definition Scifi.cxx:956
std::vector< int > covered_runs_position_alignment
Definition Scifi.h:128
Scifi()
Definition Scifi.cxx:46
std::map< TString, std::vector< Float_t > > conf_vectors
Definition Scifi.h:123
void GetPosition(Int_t id, TVector3 &vLeft, TVector3 &vRight)
Definition Scifi.cxx:664
bool alignment_init
Definition Scifi.h:132
void SetConfPar(TString name, Float_t value)
Definition Scifi.h:46
std::map< TString, Int_t > conf_ints
Definition Scifi.h:121
std::map< TString, Float_t > conf_floats
Definition Scifi.h:120
void InitEvent(SNDLHCEventHeader *e)
Definition Scifi.cxx:522
TClonesArray * fScifiPointCollection
local SiPM channel position
Definition Scifi.h:118
Double_t ycross(Double_t a, Double_t R, Double_t x)
Definition Scifi.cxx:818
Double_t integralSqrt(Double_t ynorm)
Definition Scifi.cxx:825
int last_run_pos
Definition Scifi.h:129
Scifi(const Scifi &)
void SetConfPar(TString name, TString value)
Definition Scifi.h:48
TString GetConfParS(TString name)
Definition Scifi.h:52
virtual void Initialize()
Definition Scifi.cxx:92
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > fibresSiPM
energy loss
Definition Scifi.h:114
Double_t fraction(Double_t R, Double_t x, Double_t y)
Definition Scifi.cxx:830
virtual void SiPMOverlap()
Definition Scifi.cxx:479
Float_t GetConfParF(TString name)
Definition Scifi.h:50
std::map< TString, TString > conf_strings
Definition Scifi.h:122
virtual void PreTrack()
Definition Scifi.h:93
Int_t InitMedium(const char *name)
Definition Scifi.cxx:98
std::vector< Float_t > GetConfParVector(TString name)
Definition Scifi.h:53
Int_t GetConfParI(TString name)
Definition Scifi.h:51
Scifi & operator=(const Scifi &)
void SetConfPar(TString name, std::vector< float > values)
Definition Scifi.h:49
std::vector< int > covered_runs_time_alignment
Definition Scifi.h:127
TString last_position_alignment_tag
Definition Scifi.h:131
TLorentzVector fPos
volume id
Definition Scifi.h:109
Double32_t fLength
time
Definition Scifi.h:112
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > GetSiPMmap()
Definition Scifi.h:42
void ConstructGeometry()
Definition Scifi.cxx:118
Double_t GetCorrectedTime(Int_t fDetectorID, Double_t rawTime, Double_t L)
Definition Scifi.cxx:614
virtual void FinishRun()
Definition Scifi.h:90
virtual void PostTrack()
Definition Scifi.h:92
virtual void FinishPrimary()
Definition Scifi.h:89
virtual ~Scifi()
Definition Scifi.cxx:84
void SiPMmapping()
Definition Scifi.cxx:860
virtual void BeginPrimary()
Definition Scifi.h:91
ClassDef(Scifi, 3) private Int_t fVolumeID
track index
Definition Scifi.h:100
TLorentzVector fMom
position at entrance
Definition Scifi.h:110
SNDLHCEventHeader * eventHeader
Definition Scifi.h:124
Double_t area(Double_t a, Double_t R, Double_t xL, Double_t xR)
Definition Scifi.cxx:837