14 #include "FairRootManager.h"
15 #include "FairRunAna.h"
16 #include "FairRuntimeDb.h"
18 #include "TClonesArray.h"
29 #define foldResolution 0 // <===== NO SMEARING
30 #define radialResolutionPolynomialConstant1 0.0150
31 #define radialResolutionPolynomialConstant2 0.
32 #define radialResolutionPolynomialConstant3 0.
34 #define longitudinalResolutionPolynomialConstant1 0.0001
35 #define longitudinalResolutionPolynomialConstant2 0.
36 #define longitudinalResolutionPolynomialConstant3 0.
39 #define innerStrawDiameter 1.
68 FairRootManager* ioman = FairRootManager::Instance();
71 cout <<
"-E- PndFtsHitProducerIdeal::Init: "
72 <<
"RootManager not instantiated!" << endl;
77 fPointArray = (TClonesArray*) ioman->GetObject(
"FTSPoint");
80 cout <<
"-W- PndFtsHitProducerIdeal::Init: "
81 <<
"No FTSPoint array!" << endl;
86 fHitArray =
new TClonesArray(
"PndFtsHit");
95 cout <<
"-I- PndFtsHitProducerIdeal: Intialisation successfull" << endl;
103 FairRuntimeDb*
rtdb = FairRunAna::Instance()->GetRuntimeDb();
116 Fatal(
"Exec",
"No HitArray");
136 for (Int_t iPoint = 0; iPoint < nPoints; iPoint++)
144 detID = point->GetDetectorID();
147 trackID = point->GetTrackID();
157 if(layerID>=3 && layerID<=6){skew=1;}
158 if(layerID>=11 && layerID<=14){skew=1;}
159 if(layerID>=19 && layerID<=22){skew=1;}
160 if(layerID>=27 && layerID<=30){skew=1;}
161 if(layerID>=35 && layerID<=38){skew=1;}
162 if(layerID>=43 && layerID<=46){skew=1;}
174 closestDistanceError;
184 memset(InOut, 0,
sizeof(InOut));
195 closestDistance = fts.
TrueDist(InOut);
196 closestDistanceError =0.;
202 zpos = position.Z() + ((posOutLocal.Z() + posInLocal.Z()) / 2.),
206 posInLocal, posOutLocal);
210 pos.SetXYZ(position.X(), position.Y(), position.Z());
215 Double_t eventTime = FairRootManager::Instance()->GetEventTime();
216 Double_t flightTime = point->GetTime();
218 new ((*fHitArray)[
counter])
PndFtsHit(detID, tubeID, chamberID, layerID, skew, iPoint, pos, dpos, eventTime+flightTime, closestDistance, closestDistanceError, eloss * 1e6);
226 cout <<
"-I- PndFtsHitProducerIdeal: " << nPoints <<
" FtsPoints, "
227 << nPoints <<
" Hits created." << endl;
256 TVector3 localOutPos)
259 a = (localOutPos.X() - localInPos.X()),
260 b = (localOutPos.Y() - localInPos.Y()),
271 closestDistanceError = 0.;
276 closestDistance += gRandom->Gaus(0., closestDistanceError);
282 TVector3 localInPos, TVector3 localOutPos)
285 zPosInStrawFrame = (localOutPos.Z() - localInPos.Z()) / 2.;
TClonesArray * fHitInfoArray
Double_t GetXOutLocal() const
virtual void Exec(Option_t *opt)
#define radialResolutionPolynomialConstant3
virtual InitStatus Init()
friend F32vec4 sqrt(const F32vec4 &a)
Double_t GetZOutLocal() const
#define longitudinalResolutionPolynomialConstant3
void SetPersistency(Bool_t val=kTRUE)
#define radialResolutionPolynomialConstant1
Double_t GetYOutLocal() const
Double_t GetLongitudinalResolution(Double_t zpos)
void GetClostestApproachToWire(Double_t &closestDistance, Double_t &closestDistanceError, TVector3 inPos, TVector3 outPos)
Double_t GetYInLocal() const
Double_t GetZInLocal() const
~PndFtsHitProducerIdeal()
Double_t TrueDist(Double_t Point[])
#define radialResolutionPolynomialConstant2
TClonesArray * fTubeArray
#define longitudinalResolutionPolynomialConstant1
void FoldZPosWithResolution(Double_t &zpos, Double_t &zposError, TVector3 localInPos, TVector3 localOutPos)
TVector3 GetPosition() const
void PutWireXYZ(Double_t w1, Double_t w2, Double_t w3, Double_t w4, Double_t w5, Double_t w6)
#define innerStrawDiameter
TClonesArray * FillTubeArray()
this function will be used in PndFtsHitProducesRealFast
Double_t GetRadialResolution(Double_t radius)
Double_t GetXInLocal() const
#define longitudinalResolutionPolynomialConstant2
TClonesArray * fPointArray
PndGeoFtsPar * fFtsParameters