13 #include "FairRootManager.h"
14 #include "FairRunAna.h"
15 #include "FairRuntimeDb.h"
16 #include "FairGeoVector.h"
17 #include "FairEventHeader.h"
21 #include "TClonesArray.h"
22 #include "TGeoManager.h"
76 FairRootManager* ioman = FairRootManager::Instance();
80 std::cout <<
"-E- PndSciTDigiTask::Init: "
81 <<
"RootManager not instantiated!" << std::endl;
90 std::cout <<
"-W- PndSciTDigiTask::Init: "
91 <<
"No SciTPoint array!" << std::endl;
105 std::cout <<
"-I- PndSciTDigiTask: Intialisation successfull" << std::endl;
126 if (
fGeoH == NULL ){
127 std::cout <<
"ScitTil fGeoH is loading" << std::endl;
130 else std::cout <<
"ScitTil fGeoH is already defind but shouldn't" << std::endl;
131 if (
fGeoH == NULL ){
132 std::cout <<
"ScitTil fGeoH was loaded but is still NULL" << std::endl;
145 Fatal(
"Exec",
"No HitArray");
158 Double_t mcTime,eventTime,hitTime,detectingTime;
161 TVector3 zeroVector(0,0,0);
163 TVector3 detectorPosition;
166 TVector3 hitPosition;
169 TVector3 dHitPosition;
174 Double_t cBC408 = 299792458.0/nBC408*(100/(1.0e9));
180 for (Int_t iPoint = 0; iPoint < nPoints; iPoint++)
183 if (
fVerbose>0) std::cout <<
" Ideal Hit Producer -Point-: " << point << std::endl;
188 detectorID = point->GetDetectorID();
191 point->Position(mcPosition);
196 xSiPm1=sensorDim(0)+mcPosition(0);
197 xSiPm2=sensorDim(0)-mcPosition(0);
201 mcTime = point->GetTime();
202 eventTime = FairRootManager::Instance()->GetEventTime();
203 hitTime = mcTime + eventTime;
205 sipm1 = hitTime + xSiPm1/cBC408;
206 sipm2 = hitTime + xSiPm2/cBC408;
211 detectingTime = (sipm1+sipm2)/2.0-sensorDim(0)/cBC408;
217 hitXPosition = (sipm1-sipm2)/2*cBC408;
218 if (hitXPosition > sensorDim(0)){
219 hitXPosition = sensorDim(0);
221 else if (hitXPosition < -sensorDim(0)){
222 hitXPosition = -sensorDim(0);
224 hitPosition.SetXYZ(hitXPosition,0.,0.);
230 dHitPosition =(1/
sqrt(12))*2*sensorDim;
232 dHitPosition.SetX(
fdt*cBC408);
245 sipm1, dSiPm, sipm2, dSiPm,
246 hitPosition,dHitPosition,
248 point->GetEnergyLoss());
250 tempHit->ResetLinks();
251 FairEventHeader* evtHeader = (FairEventHeader*)FairRootManager::Instance()->GetObject(
"EventHeader.");
252 tempHit->AddLink(FairLink(evtHeader->GetInputFileId(), FairRootManager::Instance()->GetEntryNr(),
fInBranchName, iPoint));
254 tempHit->AddLink(FairLink(-1, FairRootManager::Instance()->GetEntryNr(),
"EventHeader.", -1));
267 if (
fVerbose>1) std::cout <<
"-I- PndSciTDigiTask: " << nPoints <<
" SciTPoints, "
268 << nPoints <<
" Hits created." << std::endl;
287 sigt=gRandom->Gaus(0,dt);
virtual void Exec(Option_t *opt)
friend F32vec4 sqrt(const F32vec4 &a)
TClonesArray * fPointArray
virtual void SetParContainers()
virtual InitStatus Init()
void SetPersistency(Bool_t val=kTRUE)
TVector3 GetSensorDimensionsShortId(Int_t shortId)
Bool_t fActivateBuffering
static PndGeoHandling * Instance()
PndSciTHitWriteoutBuffer * fDataBuffer
void smear(Double_t &time, Double_t &dt)
TVector3 MasterToLocalShortId(const TVector3 &master, const Int_t &shortId)
TVector3 LocalToMasterShortId(const TVector3 &local, const Int_t &shortId)
virtual void SetParContainers()
Bool_t fTimeOrderedDigi
set to kTRUE to use the time ordering of the output data.
TString GetDetName() const
TString fSortedOutBranchName