12 #include "TGeoManager.h"
14 #include "FairRootManager.h"
17 #include "FairRunAna.h"
18 #include "FairRuntimeDb.h"
19 #include "FairGeoVector.h"
20 #include "FairGeoNode.h"
21 #include "FairGeoVolume.h"
28 #include "FairBaseParSet.h"
29 #include "FairGeoTransform.h"
82 cout <<
" ---------- INITIALIZATION ------------" << endl;
86 FairRootManager* ioman = FairRootManager::Instance();
88 cout <<
"-E- PndDrcDigiTask::Init: "
89 <<
"RootManager not instantiated!" << endl;
99 if(
fVerbose>1) Info(
"SetParContainers",
"done.");
112 cout <<
"-W- PndDrcDigiTask::Init: "
113 <<
"No DrcBarPoint array!" << endl;
118 fPDPointArray = (TClonesArray*) ioman->GetObject(
"DrcPDPoint");
120 cout <<
"-W- PndDrcAna::Init: "
121 <<
"No DrcPDPoint array!" << endl;
131 cout <<
"-I- PndDrcDigiTask: Intialization successfull" << endl;
141 <<
" PD points" << endl;
154 std::cout<<
" Error: bpId = "<<bpId <<std::endl;
162 TVector3 PptPosition;
163 fPpt->Position(PptPosition);
168 TVector3 posLshifted = posL + sensorDim;
171 Int_t Ncol = (Int_t)TMath::Floor(posLshifted.X()/
fPixelStep);
172 Int_t Nrow = (Int_t)TMath::Floor(posLshifted.Y()/
fPixelStep);
173 Int_t NpixelLocal = Ncol + Nrow *
fNpix;
177 Int_t sensorId = mcpId * 100 + NpixelLocal;
219 point.SetXYZ(posLshifted.X(),posLshifted.Y(),0.);
224 distance = (point-
corner).Mag();
226 if(Ncol-1 >= 0 && Nrow+1 < fNpix){
235 distance = (point-
corner).Mag();
237 if(Ncol-1 >= 0 && Nrow-1 >= 0){
245 distance = (point-
corner).Mag();
247 if(Ncol+1 < fNpix && Nrow-1 >= 0){
255 distance = (point-
corner).Mag();
257 if(Ncol+1 < fNpix && Nrow+1 < fNpix){
269 Double_t timeStamp =
fTime + FairRootManager::Instance()->GetEventTime();
272 digi->SetTimeStamp(timeStamp);
275 else digi->SetTimeStampError(0);
277 FairEventHeader* evtHeader = (FairEventHeader*)FairRootManager::Instance()->GetObject(
"EventHeader.");
279 digi->SetLink(
fPpt->GetLink(0));
280 digi->AddLink(FairLink(evtHeader->GetInputFileId(), evtHeader->GetMCEntryNumber(),
"DrcPDPoint", k));
305 TGeoVolume* actVolume =
gGeoManager->GetCurrentVolume();
306 TGeoBBox* actBox = (TGeoBBox*)(actVolume->GetShape());
307 TVector3 result(actBox->GetDX(),actBox->GetDY(),actBox->GetDZ());
313 time += gRandom->Gaus(0,sigt);
324 cout <<
"-I- PndDrcDigiTask: Finish" << endl;
friend F32vec4 exp(const F32vec4 &a)
void SetTimeAtBar(Double_t TimeAtBar)
void ActivatePixel(Int_t sensorId, Int_t k, Int_t csflag)
PndDrcBarPoint * fBarPoint
virtual InitStatus Init()
static T Sqrt(const T &x)
Int_t GetDetectorID() const
TClonesArray * fPDPointArray
Double_t fTimeGranularity
virtual void SetParContainers()
TGeoManager * gGeoManager
TString GetPath(Int_t shortID)
for a given shortID the path is returned
std::map< Int_t, Int_t > fPixelMap
Int_t GetBarPointID() const
TClonesArray * fBarPointArray
static PndGeoHandling * Instance()
TVector3 MasterToLocalShortId(const TVector3 &master, const Int_t &shortId)
TVector3 GetSensorDimensions(Int_t sensorID)
virtual void Exec(Option_t *option)
void SetPdgCode(Int_t Pdg)
void Smear(Double_t &time, Double_t sigt)
PndDrcDigiWriteoutBuffer * fDataBuffer
void ProcessPhotonPoint()
///< converter for detector names
virtual ~PndDrcDigiTask()