22 #include "FairRootManager.h"
23 #include "FairRunAna.h"
24 #include "FairRuntimeDb.h"
25 #include "FairEventHeader.h"
27 #include "TGeoManager.h"
31 #include "TClonesArray.h"
40 PndPersistencyTask(
"Ideal STT Hit Producer",0), fDataBuffer(0), fTimeOrderedDigi(kFALSE)
58 FairRootManager* ioman = FairRootManager::Instance();
60 cout <<
"-E- PndSttHitProducerRealFull::Init: "
61 <<
"RootManager not instantiated!" << endl;
66 fPointArray = (TClonesArray*) ioman->GetObject(
"STTPoint");
68 cout <<
"-W- PndSttHitProducerRealFull::Init: "
69 <<
"No STTPoint array!" << endl;
89 cout <<
"-I- PndSttHitProducerRealFull: Intialization successfull" << endl;
98 FairRuntimeDb*
rtdb = FairRunAna::Instance()->GetRuntimeDb();
127 for (Int_t iPoint = 0; iPoint < nPoints; iPoint++) {
129 if (point == NULL)
continue;
131 detID = point->GetDetectorID();
138 memset(InOut, 0,
sizeof(InOut));
155 stt.
TConst(0.5, 2, 0.8, 0.2);
173 if(radius < 0.) radius = 0.;
189 Double_t closestDistanceError = 0.0150;
206 pos.SetXYZ(position.X(), position.Y(), position.Z());
214 AddHit(detID, tubeID, iPoint, pos, dpos, pulset, radius, closestDistanceError, depCharge, point->GetTime());
216 AddHitInfo(0, 0, point->GetTrackID(), iPoint, 0, kFALSE);
221 cout <<
"-I- PndSttHitProducerRealFull: " << nPoints <<
" SttPoints, "
222 << nPoints <<
" Hits created." << endl;
227 TVector3 , TVector3 )
233 zposError = gRandom->Gaus(0., 3.);
246 Double_t EventTime = FairRootManager::Instance()->GetEventTime();
248 PndSttHit *hitnew =
new PndSttHit(detID, tubeID, iPoint, pos, dpos, p+EventTime+timeOfFlight, rsim, closestDistanceError, depcharge);
250 hitnew->ResetLinks();
251 FairEventHeader* evtHeader = (FairEventHeader*)FairRootManager::Instance()->GetObject(
"EventHeader.");
252 hitnew->AddLink(FairLink(evtHeader->GetInputFileId(), evtHeader->GetMCEntryNumber(),
"STTPoint", iPoint));
253 hitnew->AddLink(FairLink(-1, FairRootManager::Instance()->GetEntryNr(),
"EventHeader.", -1));
255 hitnew->AddLinks(*(point->GetPointerToLinks()));
257 fDataBuffer->FillNewData(hitnew, p+EventTime+timeOfFlight, timeOfFlight+EventTime);
267 Int_t size = clref.GetEntriesFast();
268 return new(clref[size])
PndSttHitInfo(fileNumber, eventNumber, trackID, pointID, nMerged, isFake);
Double_t GetYOutLocal() const
~PndSttHitProducerRealFull()
void PutWireXYZ(Double_t w1, Double_t w2, Double_t w3, Double_t w4, Double_t w5, Double_t w6)
static T Sqrt(const T &x)
Double_t GetZInLocal() const
Double_t GetXInLocal() const
void SetPersistency(Bool_t val=kTRUE)
Double_t GetPzOut() const
void FoldZPosWithResolution(Double_t &zpos, Double_t &zposError, TVector3 localInPos, TVector3 localOutPos)
Double_t GetPxOut() const
Double_t GetYInLocal() const
Double_t GetZOutLocal() const
Double_t GetXOutLocal() const
TClonesArray * FillTubeArray()
PndSttHitWriteoutBuffer * fDataBuffer
Double_t TimnsToDiscm(Double_t time)
TClonesArray * fHitInfoArray
PndGeoSttPar * fSttParameters
TClonesArray * fTubeArray
Double_t GetPyOut() const
TClonesArray * fPointArray
PndSttHitInfo * AddHitInfo(Int_t fileNumber, Int_t eventNumber, Int_t trackID, Int_t pointID, Int_t nMerged, Bool_t isFake)
void TConst(Double_t Radius, Double_t pSTP, Double_t ArP, Double_t CO2P)
virtual InitStatus Init()
virtual void Exec(Option_t *opt)
PndSttHit * AddHit(Int_t detID, Int_t tubeID, Int_t iPoint, TVector3 &pos, TVector3 &dpos, Double_t p, Double_t rsim, Double_t closestDistanceError, Double_t depcharge, Double_t timeOfFlight)
Double_t PartToTime(Double_t Mass, Double_t Momentum, Double_t InOut[])
PndSttHitProducerRealFull()