23 #include "FairRootManager.h"
24 #include "FairRunAna.h"
25 #include "FairRuntimeDb.h"
26 #include "FairEventHeader.h"
28 #include "TGeoManager.h"
31 #include "TClonesArray.h"
41 fHitInfoArray(0), fFtsParameters(new
PndGeoFtsPar()), fTimeOrderedDigi(kFALSE)
59 FairRootManager* ioman = FairRootManager::Instance();
61 cout <<
"-E- PndFtsHitProducerRealFull::Init: "
62 <<
"RootManager not instantiated!" << endl;
67 fPointArray =
dynamic_cast<TClonesArray*
> (ioman->GetObject(
"FTSPoint"));
69 cout <<
"-W- PndFtsHitProducerRealFull::Init: "
70 <<
"No FTSPoint array!" << endl;
90 cout <<
"-I- PndFtsHitProducerRealFull: Intialization successfull" << endl;
99 FairRuntimeDb*
rtdb = FairRunAna::Instance()->GetRuntimeDb();
127 for (Int_t iPoint = 0; iPoint < nPoints; iPoint++) {
129 if (point == NULL)
continue;
131 detID = point->GetDetectorID();
141 if(layerID>=3 && layerID<=6){skew=1;}
142 if(layerID>=11 && layerID<=14){skew=1;}
143 if(layerID>=19 && layerID<=22){skew=1;}
144 if(layerID>=27 && layerID<=30){skew=1;}
145 if(layerID>=35 && layerID<=38){skew=1;}
146 if(layerID>=43 && layerID<=46){skew=1;}
149 memset(InOut, 0,
sizeof(InOut));
166 fts.
TConst(0.5, 2, 0.8, 0.2);
182 if(radius < 0.) radius = 0.;
195 Double_t closestDistanceError = 0.0150;
209 pos.SetXYZ(position.X(), position.Y(), position.Z());
212 dpos.SetXYZ(0.5, 0.5, 3.);
218 AddHit(detID, tubeID, chamberID, layerID, skew, iPoint, pos, dpos, pulset, radius, closestDistanceError, depCharge, point->GetTime());
220 AddHitInfo(0, 0, point->GetTrackID(), iPoint, 0, kFALSE);
225 cout <<
"-I- PndFtsHitProducerRealFull: " << nPoints <<
" FtsPoints, "
226 << nPoints <<
" Hits created." << endl;
231 TVector3 , TVector3 )
237 zposError = gRandom->Gaus(0., 3.);
246 PndFtsHit*
PndFtsHitProducerRealFull::AddHit(Int_t detID, Int_t tubeID, Int_t chamberID, Int_t layerID, Int_t
skew, Int_t iPoint, TVector3&
pos, TVector3& dpos,
Double_t p,
Double_t rsim,
Double_t closestDistanceError,
Double_t depcharge,
Double_t timeOfFlight)
250 Double_t EventTime = FairRootManager::Instance()->GetEventTime();
252 PndFtsHit *hitnew =
new PndFtsHit(detID, tubeID, chamberID, layerID, skew, iPoint, pos, dpos, p+EventTime+timeOfFlight, rsim, closestDistanceError, depcharge);
254 hitnew->ResetLinks();
255 FairEventHeader* evtHeader = (FairEventHeader*)FairRootManager::Instance()->GetObject(
"EventHeader.");
256 hitnew->AddLink(FairLink(evtHeader->GetInputFileId(), evtHeader->GetMCEntryNumber(),
"FTSPoint", iPoint));
257 hitnew->AddLink(FairLink(-1, FairRootManager::Instance()->GetEntryNr(),
"EventHeader.", -1));
259 fDataBuffer->FillNewData(hitnew, p+EventTime+timeOfFlight, timeOfFlight+EventTime);
269 Int_t size = clref.GetEntriesFast();
270 return new(clref[size])
PndFtsHitInfo(fileNumber, eventNumber, trackID, pointID, nMerged, isFake);
Double_t GetXOutLocal() const
PndFtsHitWriteoutBuffer * fDataBuffer
PndFtsHit * AddHit(Int_t detID, Int_t tubeID, Int_t chamberID, Int_t layerID, Int_t skew, Int_t iPoint, TVector3 &pos, TVector3 &dpos, Double_t p, Double_t rsim, Double_t closestDistanceError, Double_t depcharge, Double_t timeOfFlight)
Double_t GetPzOut() const
Double_t GetZOutLocal() const
TClonesArray * fTubeArray
virtual InitStatus Init()
PndFtsHitProducerRealFull()
Double_t GetPxOut() const
void SetPersistency(Bool_t val=kTRUE)
Double_t GetYOutLocal() const
~PndFtsHitProducerRealFull()
virtual void Exec(Option_t *opt)
Double_t GetYInLocal() const
Double_t TimnsToDiscm(Double_t time)
Double_t GetZInLocal() const
void TConst(Double_t Radius, Double_t pSTP, Double_t ArP, Double_t CO2P)
TVector3 GetPosition() const
Double_t PartToTime(Double_t Mass, Double_t Momentum, Double_t InOut[])
void PutWireXYZ(Double_t w1, Double_t w2, Double_t w3, Double_t w4, Double_t w5, Double_t w6)
void FoldZPosWithResolution(Double_t &zpos, Double_t &zposError, TVector3 localInPos, TVector3 localOutPos)
TClonesArray * FillTubeArray()
this function will be used in PndFtsHitProducesRealFast
Double_t GetPyOut() const
TClonesArray * fPointArray
Double_t GetXInLocal() const
TClonesArray * fHitInfoArray
PndGeoFtsPar * fFtsParameters
PndFtsHitInfo * AddHitInfo(Int_t fileNumber, Int_t eventNumber, Int_t trackID, Int_t pointID, Int_t nMerged, Bool_t isFake)