Improved merging.
authormorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 12 Aug 2013 14:41:15 +0000 (14:41 +0000)
committermorsch <morsch@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 12 Aug 2013 14:41:15 +0000 (14:41 +0000)
STEER/STEER/AliTransportMonitor.cxx
STEER/STEER/AliTransportMonitor.h

index b86eff3..b768d96 100644 (file)
@@ -116,7 +116,9 @@ PMonData &AliTransportMonitor::AliTransportMonitorVol::GetPMonData(Int_t pdg)
 
 void AliTransportMonitor::AliTransportMonitorVol::Merge(AliTransportMonitorVol* volM) 
 {
+  //
   // Merging
+  //
   fTotalTime = (fTotalTime + volM->GetTotalTime());
   if (fTimeRZ && volM->GetHistogram()) {
     fTimeRZ->Add(volM->GetHistogram()); 
@@ -125,13 +127,11 @@ void AliTransportMonitor::AliTransportMonitorVol::Merge(AliTransportMonitorVol*
   }
 
   Int_t ntypes = volM->GetNtypes();
-  Int_t ntypes2 = GetNtypes();
   for (Int_t i = 0; i < ntypes; i++) {
     Int_t pdg = volM->GetPDG(i);
-    //PMonData &data  = GetPMonData(pdg);
-    //PMonData &dataM = volM->GetPMonData(pdg);
-    //data.fEdt  += dataM.fEdt;
-    //data.fTime += dataM.fTime;
+     PMonData &data  = GetPMonData(pdg);
+     data.fEdt  += (volM->GetEmed(i) * volM->GetTotalTime());
+     data.fTime += (volM->GetTime(i));
   }
 }
 
@@ -203,7 +203,8 @@ void AliTransportMonitor::Print(Option_t *volName) const
       timeperpart[i] = volMon->GetTime(i); 
       timepervol += timeperpart[i];
     }
-    printf("Volume %s: Transport time: %g%% of %g [s]\n", volMon->GetName(), 100.*timepervol/fTotalTime, fTotalTime);
+    printf("Volume %s: Transport time: %g%% of %g %g [s]\n", volMon->GetName(), 100.*timepervol/fTotalTime, fTotalTime,
+          volMon->GetTotalTime());
     TMath::Sort(ntypes, timeperpart, isort, kTRUE);
     TString particle;
     TDatabasePDG *pdgDB = TDatabasePDG::Instance();    
@@ -307,7 +308,22 @@ void AliTransportMonitor::Export(const char *fname)
 //______________________________________________________________________________
 void AliTransportMonitor::Merge(AliTransportMonitor* mergeMon)
 {
+
   // merge with monitor 
+  if (!fVolumeMon) 
+    {
+      TObjArray* arr = mergeMon->GetVolumes();
+      Int_t nvol = arr->GetEntriesFast();
+      fVolumeMon = new TObjArray(nvol);
+      fVolumeMon->SetOwner();
+      for (Int_t i = 0; i < nvol; i++) {
+       AliTransportMonitorVol *volMon = new AliTransportMonitorVol();
+       volMon->SetName(arr->At(i)->GetName());
+       fVolumeMon->Add(volMon);
+      }
+    } // first time
+
+
   Int_t n = fVolumeMon->GetEntriesFast();
   TObjArray* mergeVols = mergeMon->GetVolumes();
   fTotalTime = 0;
index a28e4b1..90d0738 100644 (file)
@@ -37,7 +37,6 @@ public:
       Double_t      fEdt;        // Energy * dt integral
       Double_t      fTime;       // Total transport time for the particle in this volume
       AliPMonData() : fPDG(0), fEdt(0), fTime(0) {}
-      void          Merge(AliPMonData* pdata) {fTime = 0.5*(fTime+pdata->fTime); fEdt = 0.5 * (fEdt+pdata->fEdt);}
       virtual ~AliPMonData() {}
       ClassDef(AliPMonData, 1)     // Basic monitoring info structure
     };