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.
70 FairRootManager* ioman = FairRootManager::Instance();
74 cout <<
"-E- PndSttHitProducerIdeal::Init: "
75 <<
"RootManager not instantiated!" << endl;
80 fPointArray = (TClonesArray*) ioman->GetObject(
"STTPoint");
84 cout <<
"-W- PndSttHitProducerIdeal::Init: "
85 <<
"No STTPoint array!" << endl;
90 fHitArray =
new TClonesArray(
"PndSttHit");
101 cout <<
"-I- PndSttHitProducerIdeal: Intialisation successfull" << endl;
108 FairRuntimeDb*
rtdb = FairRunAna::Instance()->GetRuntimeDb();
122 Fatal(
"Exec",
"No HitArray");
142 for (Int_t iPoint = 0; iPoint < nPoints; iPoint++)
150 detID = point->GetDetectorID();
153 trackID = point->GetTrackID();
168 closestDistanceError;
178 memset(InOut, 0,
sizeof(InOut));
189 closestDistance = stt.
TrueDist(InOut);
190 closestDistanceError =0.;
196 zpos = position.Z() + ((posOutLocal.Z() + posInLocal.Z()) / 2.),
200 posInLocal, posOutLocal);
204 pos.SetXYZ(position.X(), position.Y(), position.Z());
209 new ((*fHitArray)[
counter])
PndSttHit(detID, tubeID, iPoint, pos, dpos, 0, closestDistance, closestDistanceError, eloss * 1e6);
218 cout <<
"-I- PndSttHitProducerIdeal: " << nPoints <<
" SttPoints, "
219 << nPoints <<
" Hits created." << endl;
248 TVector3 localOutPos)
251 a = (localOutPos.X() - localInPos.X()),
252 b = (localOutPos.Y() - localInPos.Y()),
263 closestDistanceError = 0.;
268 closestDistance += gRandom->Gaus(0., closestDistanceError);
274 TVector3 localInPos, TVector3 localOutPos)
277 zPosInStrawFrame = (localOutPos.Z() - localInPos.Z()) / 2.;
#define radialResolutionPolynomialConstant2
#define radialResolutionPolynomialConstant1
Double_t GetYOutLocal() const
void GetClostestApproachToWire(Double_t &closestDistance, Double_t &closestDistanceError, TVector3 inPos, TVector3 outPos)
void PutWireXYZ(Double_t w1, Double_t w2, Double_t w3, Double_t w4, Double_t w5, Double_t w6)
friend F32vec4 sqrt(const F32vec4 &a)
Double_t GetZInLocal() const
Double_t GetXInLocal() const
virtual InitStatus Init()
void SetPersistency(Bool_t val=kTRUE)
Double_t TrueDist(Double_t Point[])
#define longitudinalResolutionPolynomialConstant2
Double_t GetYInLocal() const
Double_t GetZOutLocal() const
Double_t GetXOutLocal() const
TClonesArray * fPointArray
#define radialResolutionPolynomialConstant3
void FoldZPosWithResolution(Double_t &zpos, Double_t &zposError, TVector3 localInPos, TVector3 localOutPos)
TClonesArray * fTubeArray
virtual void Exec(Option_t *opt)
Double_t GetLongitudinalResolution(Double_t zpos)
TClonesArray * FillTubeArray()
~PndSttHitProducerIdeal()
TClonesArray * fHitInfoArray
#define longitudinalResolutionPolynomialConstant3
PndGeoSttPar * fSttParameters
#define longitudinalResolutionPolynomialConstant1
#define innerStrawDiameter
Double_t GetRadialResolution(Double_t radius)