// ESAF : Euso Simulation and Analysis Framework
// $Id: EShowerFiller.cc,v 1.3 2004/06/22 18:12:05 naumov Exp $
// A.Thea, created Jun, 22 2004
#include "EShowerFiller.hh"
#include "EShower.hh"
#include "EShowerStep.hh"
#include "PhysicsData.hh"
#include "ShowerTrack.hh"
#include <stdexcept>
ClassImp(EShowerFiller)
//_____________________________________________________________________________
EShowerFiller::EShowerFiller( const PhysicsData *track ) : EFiller("EShower") {
// ctor
if ( track->Type() != "shower" )
throw runtime_error("EShowerFiller: PhysicsData contains "
+track->Type()+" instead of a showertrack");
fTrack = (ShowerTrack*)track;
}
//_____________________________________________________________________________
EShowerFiller::~EShowerFiller() {
// dtor
}
//_____________________________________________________________________________
void EShowerFiller::Fill( EFillable* ev ) {
// fill the root file
EShower *shower = (EShower*)ev;
const ShowerTrack& track = *fTrack;
TClonesArray &steps = *(shower->GetSteps());
for(UInt_t i(0); i<track.Size(); i++){
EShowerStep *s = new (steps[shower->fNumSteps++]) EShowerStep();
s->SetXi( track[i].GetXi() );
s->SetXf( track[i].GetXf() );
s->SetPosi( track[i].GetXYZi() );
s->SetPosf( track[i].GetXYZf() );
s->SetTimei( track[i].GetTimei() );
s->SetTimef( track[i].GetTimef() );
s->SetAgei( track[i].GetAgei() );
s->SetAgef( track[i].GetAgef() );
s->SetNumElectrons( track[i].GetNelectrons() );
s->SetNumCharged( track[i].GetNcharged() );
s->SetNumCherenkov( track[i].GetNcherenkov() );
}
shower->SetEnergy( fTrack->GetEnergy() );
shower->SetTheta( fTrack->GetTheta() );
shower->SetPhi( fTrack->GetPhi() );
shower->SetX1( fTrack->GetX1() );
shower->SetElectrEthres( fTrack->GetEthrEl() );
shower->SetDir( fTrack->GetDirVers() );
shower->SetInitPos( fTrack->GetInitPos() );
shower->SetHitGround( fTrack->GetHitGround() );
}