1 | // ESAF : Euso Simulation and Analysis Framework |
---|
2 | // $Id: EShowerFiller.cc 811 2004-06-22 18:12:05Z naumov $ |
---|
3 | // A.Thea, created Jun, 22 2004 |
---|
4 | |
---|
5 | #include "EShowerFiller.hh" |
---|
6 | #include "EShower.hh" |
---|
7 | #include "EShowerStep.hh" |
---|
8 | |
---|
9 | #include "PhysicsData.hh" |
---|
10 | #include "ShowerTrack.hh" |
---|
11 | #include <stdexcept> |
---|
12 | |
---|
13 | |
---|
14 | ClassImp(EShowerFiller) |
---|
15 | |
---|
16 | //_____________________________________________________________________________ |
---|
17 | EShowerFiller::EShowerFiller( const PhysicsData *track ) : EFiller("EShower") { |
---|
18 | // ctor |
---|
19 | |
---|
20 | if ( track->Type() != "shower" ) |
---|
21 | throw runtime_error("EShowerFiller: PhysicsData contains " |
---|
22 | +track->Type()+" instead of a showertrack"); |
---|
23 | fTrack = (ShowerTrack*)track; |
---|
24 | } |
---|
25 | |
---|
26 | //_____________________________________________________________________________ |
---|
27 | EShowerFiller::~EShowerFiller() { |
---|
28 | // dtor |
---|
29 | } |
---|
30 | |
---|
31 | //_____________________________________________________________________________ |
---|
32 | void EShowerFiller::Fill( EFillable* ev ) { |
---|
33 | // fill the root file |
---|
34 | |
---|
35 | EShower *shower = (EShower*)ev; |
---|
36 | |
---|
37 | const ShowerTrack& track = *fTrack; |
---|
38 | TClonesArray &steps = *(shower->GetSteps()); |
---|
39 | for(UInt_t i(0); i<track.Size(); i++){ |
---|
40 | EShowerStep *s = new (steps[shower->fNumSteps++]) EShowerStep(); |
---|
41 | s->SetXi( track[i].GetXi() ); |
---|
42 | s->SetXf( track[i].GetXf() ); |
---|
43 | s->SetPosi( track[i].GetXYZi() ); |
---|
44 | s->SetPosf( track[i].GetXYZf() ); |
---|
45 | s->SetTimei( track[i].GetTimei() ); |
---|
46 | s->SetTimef( track[i].GetTimef() ); |
---|
47 | s->SetAgei( track[i].GetAgei() ); |
---|
48 | s->SetAgef( track[i].GetAgef() ); |
---|
49 | s->SetNumElectrons( track[i].GetNelectrons() ); |
---|
50 | s->SetNumCharged( track[i].GetNcharged() ); |
---|
51 | s->SetNumCherenkov( track[i].GetNcherenkov() ); |
---|
52 | } |
---|
53 | shower->SetEnergy( fTrack->GetEnergy() ); |
---|
54 | shower->SetTheta( fTrack->GetTheta() ); |
---|
55 | shower->SetPhi( fTrack->GetPhi() ); |
---|
56 | shower->SetX1( fTrack->GetX1() ); |
---|
57 | shower->SetElectrEthres( fTrack->GetEthrEl() ); |
---|
58 | shower->SetDir( fTrack->GetDirVers() ); |
---|
59 | shower->SetInitPos( fTrack->GetInitPos() ); |
---|
60 | shower->SetHitGround( fTrack->GetHitGround() ); |
---|
61 | } |
---|