20 #include "FairRootManager.h"
21 #include "FairRunAna.h"
22 #include "FairRuntimeDb.h"
24 #include "TClonesArray.h"
36 fHitArray(0), fDigiArray(0), fThreshold(0), fDigiPosMethod(
""), fEmcDigiRescaleFactor(0), fEmcDigiPositionDepthPWO(0), fEmcDigiPositionDepthShashlyk(0), fUseDigiEffectiveSmearing(0), fDetectedPhotonsPerMeV(0), fNPhotoElectronsPerMeVAPDBarrel(0), fNPhotoElectronsPerMeVAPDBWD(0), fNPhotoElectronsPerMeVVPT(0), fSensitiveAreaAPD(0), fSensitiveAreaVPT(0), fQuantumEfficiencyAPD(0), fQuantumEfficiencyVPT(0), fExcessNoiseFactorAPD(0), fExcessNoiseFactorVPT(0), fIncoherent_elec_noise_width_GeV_APD(0), fIncoherent_elec_noise_width_GeV_VPT(0), fMapVersion(0), fGeoPar(new
PndEmcGeoPar()), fDigiPar(new
PndEmcDigiPar()), fRecoPar(new
PndEmcRecoPar())
63 FairRootManager* ioman = FairRootManager::Instance();
66 cout <<
"-E- PndEmcMakeDigi::Init: "
67 <<
"RootManager not instantiated!" << endl;
72 fHitArray =
dynamic_cast<TClonesArray *
> (ioman->GetObject(
"EmcHit"));
74 cout <<
"-W- PndEmcMakeDigi::Init: "
75 <<
"No EmcHit array!" << endl;
97 cout <<
"-W- PndEmcMakeDigi::Init: "
98 <<
"Unknown digi position method!" << endl;
128 cout <<
"-I- PndEmcMakeDigi: Intialization successfull" << endl;
144 if ( !
fDigiArray ) Fatal(
"Exec",
"No Digi Array");
154 for (Int_t iHit=0; iHit<
nHits; iHit++) {
156 int detId=theHit->GetDetectorID();
159 Int_t trackId=theHit->GetRefIndex();
191 sigma_E=
sqrt(pow(0.056/energy,2)+pow(0.024/
sqrt(energy),2)+0.013);
194 std::cout<<
"PndEmcMakeDigi::Exec - Unknown module number in EMC digitization"<<std::endl;
198 energy= gRandom->Gaus(energy,sigma_E*energy);
211 AddDigi(trackId,detId, energy, time,iHit);
230 Int_t size = clref.GetEntriesFast();
232 newDigi->SetTimeStamp(FairRootManager::Instance()->GetEventTime() + time*1.e9);
239 FairRun*
run = FairRun::Instance();
240 if ( ! run ) Fatal(
"SetParContainers",
"No analysis run");
242 FairRuntimeDb* db = run->GetRuntimeDb();
243 if ( ! db ) Fatal(
"SetParContainers",
"No runtime database");
PndEmcRecoPar * fRecoPar
Reconstruction parameter container.
Double_t GetQuantumEfficiencyVPT()
Short_t GetCrystal() const
Double_t GetEmcDigiPositionDepthShashlyk()
static void selectDigiPositionMethod(PositionMethod, double positionDepthPWO=0., double positionDepthShahslyk=0., double rescaleFactor=1.)
Double_t GetIncoherent_elec_noise_width_GeV_VPT()
represents the reconstructed hit of one emc crystal
Double_t fSensitiveAreaAPD
const std::string & GetDigiPosMethod() const
Double_t fEmcDigiPositionDepthShashlyk
virtual InitStatus Init()
Init Task.
Double_t GetQuantumEfficiencyAPD()
friend F32vec4 sqrt(const F32vec4 &a)
Double_t val[nBoxes][nFEBox]
Double_t GetIncoherent_elec_noise_width_GeV_APD()
virtual ~PndEmcMakeDigi()
Double_t fExcessNoiseFactorVPT
Int_t GetUseDigiEffectiveSmearing()
void SetPersistency(Bool_t val=kTRUE)
Double_t fNPhotoElectronsPerMeVAPDBWD
Double_t fQuantumEfficiencyAPD
Double_t fEmcDigiRescaleFactor
PndEmcDigiPar * fDigiPar
Digitisation parameter container.
virtual void Exec(Option_t *opt)
Runs the task.
Double_t GetEnergyDigiThreshold()
PndEmcMakeDigi(Bool_t storedigis=kTRUE)
TClonesArray * fDigiArray
Double_t fIncoherent_elec_noise_width_GeV_APD
Double_t GetSensitiveAreaAPD()
std::string fDigiPosMethod
PndEmcGeoPar * fGeoPar
Geometry parameter container.
void SetDigiPosMethod(const std::string &digiPosMethod)
virtual Double_t GetEnergy() const
parameter set of Emc digitisation
Double_t fIncoherent_elec_noise_width_GeV_VPT
Double_t fDetectedPhotonsPerMeV
void SetStorageOfData(Bool_t val)
Method to specify whether digis are stored or not.
Double_t fSensitiveAreaVPT
Double_t GetDetectedPhotonsPerMeV()
Double_t fNPhotoElectronsPerMeVAPDBarrel
Double_t fQuantumEfficiencyVPT
virtual Double_t GetTime() const
represents the deposited energy of one emc crystal from simulation
Double_t GetExcessNoiseFactorVPT()
virtual void SetParContainers()
Double_t GetExcessNoiseFactorAPD()
Double_t fEmcDigiPositionDepthPWO
Int_t fUseDigiEffectiveSmearing
static PndEmcStructure * Instance()
Double_t fExcessNoiseFactorAPD
Short_t GetModule() const
Double_t fNPhotoElectronsPerMeVVPT
Double_t GetSensitiveAreaVPT()
Task to create PndEmcDigi from PndEmcHit.
Parameter set for Emc Reco.
PndEmcDigi * AddDigi(Int_t trackID, Int_t detID, Float_t energy, Float_t time, Int_t hitIndex)
Adds a PndEmcDigi to to fDigiArray and returns it.
Double_t GetEmcDigiPositionDepthPWO()