#include "AliSimulation.h"
#include "AliStack.h"
#include "AliTrackReference.h"
+#include "AliTransportMonitor.h"
using std::endl;
using std::cout;
fSaveRndmStatus(kFALSE),
fSaveRndmEventStatus(kFALSE),
fReadRndmStatus(kFALSE),
+ fUseMonitoring(kFALSE),
fRndmFileName("random.root"),
fEventEnergy(0),
fSummEnergy(0),
fDecayPdg(0),
fImedia(0),
fTransParName("\0"),
+ fMonitor(0),
fHitLists(0),
fTmpTreeTR(0),
fTmpFileTR(0),
fSaveRndmStatus(kFALSE),
fSaveRndmEventStatus(kFALSE),
fReadRndmStatus(kFALSE),
+ fUseMonitoring(kFALSE),
fRndmFileName("random.root"),
fEventEnergy(0),
fSummEnergy(0),
fDecayPdg(0),
fImedia(new TArrayI(1000)),
fTransParName("\0"),
+ fMonitor(0),
fHitLists(new TList()),
fTmpTreeTR(0),
fTmpFileTR(0),
delete fGenerator;
delete fImedia;
delete fHitLists;
+ delete fMonitor;
// Delete track references
}
// Clean generator information
AliDebug(1, "fGenerator->FinishRun()");
fGenerator->FinishRun();
+
+ // Monitoring information
+ if (fMonitor) {
+ fMonitor->Print();
+ fMonitor->Export("timing.root");
+ }
//Output energy summary tables
AliDebug(1, "EnergySummary()");
FixParticleDecaytime();
}
-
-
+ // --- If monitoring timing was requested, monitor the step
+ if (fUseMonitoring) {
+ if (!fMonitor) {
+ fMonitor = new AliTransportMonitor(gMC->NofVolumes()+1);
+ fMonitor->Start();
+ }
+ if (gMC->IsNewTrack() || gMC->TrackTime() == 0. || gMC->TrackStep()<1.1E-10) {
+ fMonitor->DummyStep();
+ } else {
+ // Normal stepping
+ Int_t copy;
+ Int_t volId = gMC->CurrentVolID(copy);
+ Int_t pdg = gMC->TrackPid();
+ TLorentzVector xyz, pxpypz;
+ gMC->TrackPosition(xyz);
+ gMC->TrackMomentum(pxpypz);
+ fMonitor->StepInfo(volId, pdg, pxpypz.E(), xyz.X(), xyz.Y(), xyz.Z());
+ }
+ }
//
// --- If lego option, do it and leave
if (AliSimulation::Instance()->Lego())