ROOT logo
void printProfile(char* g3 = "geant3/timing_200_woZDC.root", char* g4 ="geant4/timing_200_woZDC.root")
{
  // Create monitors 
  AliTransportMonitor* mon3 = AliTransportMonitor::Import(g3);
  AliTransportMonitor* mon4 = AliTransportMonitor::Import(g4);
  //
  // Create timing histos and volume lists
  mon3->Print();
  tH3 = (TH1F*) volume_timing->Clone();
  TObjArray* volumes3 = mon3->GetVolumes(); 
  mon4->Print();
  tH4 = (TH1F*) volume_timing->Clone();
  TObjArray* volumes4 = mon4->GetVolumes(); 
  //
  // Normalise the geant 3 histo
  // Fraction of time in %
  Float_t ri = tH3->Integral();
  tH3->Scale(100./ri);
  //
  Float_t cumulant = 0.;  // cumulant
  Int_t   i = 1;          // position in list
  //
  // print up to 90% of total time
  //
  printf(" Pos.               Volume  t (%) ct (%)  Time_G3  Time_G4 perStepG3 perStepG4   StepsG3   StepsG4    te+e-     tgam     thad     te+e-    tgam     thad\n"); 
  while (cumulant < 90.) {
    Float_t rt = tH3->GetBinContent(i);
    cumulant += rt;
    // extract the corresponding geant3 and geant4 volumes
    char* volN = (tH3->GetXaxis())->GetBinLabel(i);
  AliTransportMonitor::AliTransportMonitorVol* vol4 = (AliTransportMonitor::AliTransportMonitorVol*) 
    volumes4->FindObject(volN);
  AliTransportMonitor::AliTransportMonitorVol* vol3 = 0;
    if (i > 1) {
      vol3 = (AliTransportMonitor::AliTransportMonitorVol*) 
	volumes3->FindObject(volN);
    } else {
      vol3 = (AliTransportMonitor::AliTransportMonitorVol*) 
	volumes3->At(1);
     }
    TString s(volN);
    TString s20(s(0,20));
    // Total time
    
    Float_t t4[5]; 
    t4[0] = vol4->GetTotalTime();
    Float_t t3[5]; 
    t3[0] = vol3->GetTotalTime();

    // For e+/e-
    t4[1] = ElectronTime(vol4);
    t3[1] = ElectronTime(vol3);
 
    // For photons
    t4[2] = PhotonTime(vol4);
    t3[2] = PhotonTime(vol3);
   
    // Hadrons
    t4[3] = HadronTime(vol4);
    t3[3] = HadronTime(vol3);
   
    printf("%5d %20s %6.2f %6.2f %8.3f %8.3f %8.3e %8.3e %8.3e %8.3e %8.3f %8.3f %8.3f %8.3f %8.3f %8.3f\n", 
	   i,
	   s20.Data(),
	   rt, cumulant, t3[0], t4[0], t3[0]/(1.+vol3->GetNSteps()), 
	   t4[0]/(1.+vol4->GetNSteps()), vol3->GetNSteps(), vol4->GetNSteps(),
	   t3[1]/t3[0] * 100., t3[2]/t3[0] * 100., t3[3]/t3[0] * 100.,
	   t4[1]/t4[0] * 100., t4[2]/t4[0] * 100., t4[3]/t4[0] * 100.

	   );
    i++;
  }
}

Float_t ElectronTime(AliTransportMonitor::AliTransportMonitorVol* vol)
{
   Int_t nt = vol->GetNtypes();
   Float_t t = 0.;
   for (Int_t i = 0; i < nt; i++) {
     Int_t pdg = TMath::Abs(vol->GetPDG(i));
     if (pdg == 11) t += vol->GetTime(i);
   }

   return t;
}

Float_t PhotonTime(AliTransportMonitor::AliTransportMonitorVol* vol)
{
   Int_t nt = vol->GetNtypes();
   Float_t t = 0.;
   for (Int_t i = 0; i < nt; i++) {
     Int_t pdg = TMath::Abs(vol->GetPDG(i));
     if (pdg == 22) t += vol->GetTime(i);
   }
   return t;
}

Float_t HadronTime(AliTransportMonitor::AliTransportMonitorVol* vol)
{
   Int_t nt = vol->GetNtypes();
   Float_t t = 0.;
   for (Int_t i = 0; i < nt; i++) {
     Int_t pdg = TMath::Abs(vol->GetPDG(i));
     if (pdg == 211 || pdg == 2212 || pdg == 2112 || pdg == 130 || pdg == 321) t += vol->GetTime(i);
   }
   return t;
}


 printProfile.C:1
 printProfile.C:2
 printProfile.C:3
 printProfile.C:4
 printProfile.C:5
 printProfile.C:6
 printProfile.C:7
 printProfile.C:8
 printProfile.C:9
 printProfile.C:10
 printProfile.C:11
 printProfile.C:12
 printProfile.C:13
 printProfile.C:14
 printProfile.C:15
 printProfile.C:16
 printProfile.C:17
 printProfile.C:18
 printProfile.C:19
 printProfile.C:20
 printProfile.C:21
 printProfile.C:22
 printProfile.C:23
 printProfile.C:24
 printProfile.C:25
 printProfile.C:26
 printProfile.C:27
 printProfile.C:28
 printProfile.C:29
 printProfile.C:30
 printProfile.C:31
 printProfile.C:32
 printProfile.C:33
 printProfile.C:34
 printProfile.C:35
 printProfile.C:36
 printProfile.C:37
 printProfile.C:38
 printProfile.C:39
 printProfile.C:40
 printProfile.C:41
 printProfile.C:42
 printProfile.C:43
 printProfile.C:44
 printProfile.C:45
 printProfile.C:46
 printProfile.C:47
 printProfile.C:48
 printProfile.C:49
 printProfile.C:50
 printProfile.C:51
 printProfile.C:52
 printProfile.C:53
 printProfile.C:54
 printProfile.C:55
 printProfile.C:56
 printProfile.C:57
 printProfile.C:58
 printProfile.C:59
 printProfile.C:60
 printProfile.C:61
 printProfile.C:62
 printProfile.C:63
 printProfile.C:64
 printProfile.C:65
 printProfile.C:66
 printProfile.C:67
 printProfile.C:68
 printProfile.C:69
 printProfile.C:70
 printProfile.C:71
 printProfile.C:72
 printProfile.C:73
 printProfile.C:74
 printProfile.C:75
 printProfile.C:76
 printProfile.C:77
 printProfile.C:78
 printProfile.C:79
 printProfile.C:80
 printProfile.C:81
 printProfile.C:82
 printProfile.C:83
 printProfile.C:84
 printProfile.C:85
 printProfile.C:86
 printProfile.C:87
 printProfile.C:88
 printProfile.C:89
 printProfile.C:90
 printProfile.C:91
 printProfile.C:92
 printProfile.C:93
 printProfile.C:94
 printProfile.C:95
 printProfile.C:96
 printProfile.C:97
 printProfile.C:98
 printProfile.C:99
 printProfile.C:100
 printProfile.C:101
 printProfile.C:102
 printProfile.C:103
 printProfile.C:104
 printProfile.C:105
 printProfile.C:106
 printProfile.C:107
 printProfile.C:108
 printProfile.C:109
 printProfile.C:110