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 Float_t GetConfParF(TString name){return conf_floats[name];}
50 Int_t GetConfParI(TString name){return conf_ints[name];}
51 TString GetConfParS(TString name){return conf_strings[name];}
53
55 virtual void Initialize();
56
60 virtual Bool_t ProcessHits( FairVolume* v=0);
61
63 virtual void Register();
64
66 virtual TClonesArray* GetCollection(Int_t iColl) const ;
67
69 virtual void Reset();
70
74 ScifiPoint* AddHit(Int_t trackID, Int_t detID,
75 TVector3 pos, TVector3 mom,
76 Double_t time, Double_t length,
77 Double_t eLoss, Int_t pdgCode);
78
83 virtual void CopyClones( TClonesArray* cl1, TClonesArray* cl2 ,
84 Int_t offset) {;}
85 virtual void SetSpecialPhysicsCuts() {;}
86 virtual void EndOfEvent();
87 virtual void FinishPrimary() {;}
88 virtual void FinishRun() {;}
89 virtual void BeginPrimary() {;}
90 virtual void PostTrack() {;}
91 virtual void PreTrack() {;}
92 virtual void BeginEvent() {;}
93
94
95 Scifi(const Scifi&);
97
98 ClassDef(Scifi,3)
99
100private:
101
105 Int_t fTrackID;
106 Int_t fVolumeID;
107 TLorentzVector fPos;
108 TLorentzVector fMom;
109 Double32_t fTime;
110 Double32_t fLength;
111 Double32_t fELoss;
112 std::map<Int_t,std::map<Int_t,std::array<float, 2>>> fibresSiPM;
113 std::map<Int_t,std::map<Int_t,std::array<float, 2>>> siPMFibres;
114 std::map<Int_t,float> SiPMPos;
118 std::map<TString,Float_t> conf_floats;
119 std::map<TString,Int_t> conf_ints;
120 std::map<TString,TString> conf_strings;
122
123 // Vector to store runs covered in the geometry file.
130protected:
131
132 Int_t InitMedium(const char* name);
133
134};
135
136#endif
Definition Scifi.h:20
TVector3 GetLocalPos(Int_t id, TVector3 *glob)
Definition Scifi.cxx:607
Double32_t fTime
momentum at entrance
Definition Scifi.h:109
virtual void CopyClones(TClonesArray *cl1, TClonesArray *cl2, Int_t offset)
Definition Scifi.h:83
std::map< Int_t, float > SiPMPos
inverse mapping
Definition Scifi.h:114
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:860
virtual void BeginEvent()
Definition Scifi.h:92
void GetSiPMPosition(Int_t SiPMChan, TVector3 &A, TVector3 &B)
Definition Scifi.cxx:625
Double32_t fELoss
length
Definition Scifi.h:111
TString last_time_alignment_tag
Definition Scifi.h:127
void SetConfPar(TString name, Int_t value)
Definition Scifi.h:47
int last_run_time
Definition Scifi.h:126
virtual void EndOfEvent()
Definition Scifi.cxx:829
virtual void Register()
Definition Scifi.cxx:835
virtual TClonesArray * GetCollection(Int_t iColl) const
Definition Scifi.cxx:848
std::map< Int_t, std::map< Int_t, std::array< float, 2 > > > siPMFibres
mapping of fibres to SiPM channels
Definition Scifi.h:113
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:454
virtual void SetSpecialPhysicsCuts()
Definition Scifi.h:85
virtual void Reset()
Definition Scifi.cxx:854
std::vector< int > covered_runs_position_alignment
Definition Scifi.h:125
Scifi()
Definition Scifi.cxx:46
void GetPosition(Int_t id, TVector3 &vLeft, TVector3 &vRight)
Definition Scifi.cxx:562
bool alignment_init
Definition Scifi.h:129
void SetConfPar(TString name, Float_t value)
Definition Scifi.h:46
std::map< TString, Int_t > conf_ints
Definition Scifi.h:119
std::map< TString, Float_t > conf_floats
Definition Scifi.h:118
void InitEvent(SNDLHCEventHeader *e)
Definition Scifi.cxx:425
TClonesArray * fScifiPointCollection
local SiPM channel position
Definition Scifi.h:116
Double_t ycross(Double_t a, Double_t R, Double_t x)
Definition Scifi.cxx:716
Double_t integralSqrt(Double_t ynorm)
Definition Scifi.cxx:723
int last_run_pos
Definition Scifi.h:126
Scifi(const Scifi &)
void SetConfPar(TString name, TString value)
Definition Scifi.h:48
TString GetConfParS(TString name)
Definition Scifi.h:51
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:112
Double_t fraction(Double_t R, Double_t x, Double_t y)
Definition Scifi.cxx:728
virtual void SiPMOverlap()
Definition Scifi.cxx:382
Float_t GetConfParF(TString name)
Definition Scifi.h:49
std::map< TString, TString > conf_strings
Definition Scifi.h:120
virtual void PreTrack()
Definition Scifi.h:91
Int_t InitMedium(const char *name)
Definition Scifi.cxx:98
Int_t GetConfParI(TString name)
Definition Scifi.h:50
Scifi & operator=(const Scifi &)
std::vector< int > covered_runs_time_alignment
Definition Scifi.h:124
TString last_position_alignment_tag
Definition Scifi.h:128
TLorentzVector fPos
volume id
Definition Scifi.h:107
Double32_t fLength
time
Definition Scifi.h:110
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:517
virtual void FinishRun()
Definition Scifi.h:88
virtual void PostTrack()
Definition Scifi.h:90
virtual void FinishPrimary()
Definition Scifi.h:87
virtual ~Scifi()
Definition Scifi.cxx:84
void SiPMmapping()
Definition Scifi.cxx:758
virtual void BeginPrimary()
Definition Scifi.h:89
ClassDef(Scifi, 3) private Int_t fVolumeID
track index
Definition Scifi.h:98
TLorentzVector fMom
position at entrance
Definition Scifi.h:108
SNDLHCEventHeader * eventHeader
Definition Scifi.h:121
Double_t area(Double_t a, Double_t R, Double_t xL, Double_t xR)
Definition Scifi.cxx:735