ROOT logo
ReadImpacts(Int_t nEvents=1,char* file="galice.root")
{

  // Script reads PHOS impacts and prints them
  // Impacts are exacts values of the track coming to EMC, CPV or PPSD
  // and was stored to separate branches of TreeH by AliPHOSvImpacts
  //
  // Yuri Kharlov 4 June 2001

  f = new TFile(file,"readonly");
  (AliRun*)gAlice=(AliRun*)f->Get("gAlice");
  AliPHOSvImpacts *  fPHOS  = (AliPHOSvImpacts *)gAlice->GetDetector("PHOS") ;
  AliPHOSGeometry *  fGeom  = AliPHOSGeometry::GetInstance(fPHOS->GetGeometry()->
                                                           GetName(),
                                                           fPHOS->GetGeometry()->GetTitle() ) ;
  Int_t nPHOSModules = fGeom->GetNModules();
  Int_t nCPVModules  = fGeom->GetNCPVModules();
  Int_t nPPSDModules = fGeom->GetNPPSDModules();

  TBranch * branchEMCimpacts;
  TBranch * branchCPVimpacts;
  TBranch * branchPPSDimpacts;
  TList * fEmcImpacts ;
  TList * fCpvImpacts ;
  TList * fPpsdImpacts ;

  // Loop over events
  for (Int_t iEvent=0; iEvent<nEvents; iEvent++) {
    printf("===========> Event %5d <====================\n",iEvent);
    gAlice->GetEvent(iEvent) ;
    
    // Get branches EMC, CPV and PPSD impacts
    if (! (branchEMCimpacts =gAlice->TreeH()->GetBranch("PHOSEmcImpacts")) )  return 1;
    if (! (branchCPVimpacts =gAlice->TreeH()->GetBranch("PHOSCpvImpacts")) )  return 1;
    if (! (branchPPSDimpacts=gAlice->TreeH()->GetBranch("PHOSPpsdImpacts")) ) return 1;
    
    // Loop over primary tracks
    for (itrack=0; itrack < gAlice->GetNtrack(); itrack++){
      // Set addresses of impacts
      branchEMCimpacts ->SetAddress(&fEmcImpacts) ;
      branchCPVimpacts ->SetAddress(&fCpvImpacts) ;
      branchPPSDimpacts->SetAddress(&fPpsdImpacts) ;
      branchEMCimpacts ->GetEntry(itrack,0);
      branchCPVimpacts ->GetEntry(itrack,0);
      branchPPSDimpacts->GetEntry(itrack,0);
      
      TClonesArray  *impacts;
      AliPHOSImpact *impact;
      Int_t iModule;

      // Do loop over EMC modules
      for (iModule=0; iModule<nPHOSModules; iModule++) {
	impacts = (TClonesArray *)fEmcImpacts->At(iModule);
	// Do loop over impacts in the module
	for (Int_t iImpact=0; iImpact<impacts->GetEntries(); iImpact++) {
	  impact=(AliPHOSImpact*)impacts->At(iImpact);
	  printf("EMC  module %d: ",iModule);
	  impact->Print();
	}
      }

      // Do loop over CPV modules
      for (iModule=0; iModule<nCPVModules; iModule++) {
	impacts = (TClonesArray *)fCpvImpacts->At(iModule);
	// Do loop over impacts in the module
	for (Int_t iImpact=0; iImpact<impacts->GetEntries(); iImpact++) {
	  impact=(AliPHOSImpact*)impacts->At(iImpact);
	  printf("CPV  module %d: ",iModule);
	  impact->Print();
	}
      }

      // Do loop over PPSD modules
      for (iModule=0; iModule<nPPSDModules; iModule++) {
	impacts = (TClonesArray *)fPpsdImpacts->At(iModule);
	// Do loop over impacts in the module
	for (Int_t iImpact=0; iImpact<impacts->GetEntries(); iImpact++) {
	  impact=(AliPHOSImpact*)impacts->At(iImpact);
	  printf("PPSD Module %d: ",iModule);
	  impact->Print();
	}
      }

    }
  }
}
 ReadImpacts.C:1
 ReadImpacts.C:2
 ReadImpacts.C:3
 ReadImpacts.C:4
 ReadImpacts.C:5
 ReadImpacts.C:6
 ReadImpacts.C:7
 ReadImpacts.C:8
 ReadImpacts.C:9
 ReadImpacts.C:10
 ReadImpacts.C:11
 ReadImpacts.C:12
 ReadImpacts.C:13
 ReadImpacts.C:14
 ReadImpacts.C:15
 ReadImpacts.C:16
 ReadImpacts.C:17
 ReadImpacts.C:18
 ReadImpacts.C:19
 ReadImpacts.C:20
 ReadImpacts.C:21
 ReadImpacts.C:22
 ReadImpacts.C:23
 ReadImpacts.C:24
 ReadImpacts.C:25
 ReadImpacts.C:26
 ReadImpacts.C:27
 ReadImpacts.C:28
 ReadImpacts.C:29
 ReadImpacts.C:30
 ReadImpacts.C:31
 ReadImpacts.C:32
 ReadImpacts.C:33
 ReadImpacts.C:34
 ReadImpacts.C:35
 ReadImpacts.C:36
 ReadImpacts.C:37
 ReadImpacts.C:38
 ReadImpacts.C:39
 ReadImpacts.C:40
 ReadImpacts.C:41
 ReadImpacts.C:42
 ReadImpacts.C:43
 ReadImpacts.C:44
 ReadImpacts.C:45
 ReadImpacts.C:46
 ReadImpacts.C:47
 ReadImpacts.C:48
 ReadImpacts.C:49
 ReadImpacts.C:50
 ReadImpacts.C:51
 ReadImpacts.C:52
 ReadImpacts.C:53
 ReadImpacts.C:54
 ReadImpacts.C:55
 ReadImpacts.C:56
 ReadImpacts.C:57
 ReadImpacts.C:58
 ReadImpacts.C:59
 ReadImpacts.C:60
 ReadImpacts.C:61
 ReadImpacts.C:62
 ReadImpacts.C:63
 ReadImpacts.C:64
 ReadImpacts.C:65
 ReadImpacts.C:66
 ReadImpacts.C:67
 ReadImpacts.C:68
 ReadImpacts.C:69
 ReadImpacts.C:70
 ReadImpacts.C:71
 ReadImpacts.C:72
 ReadImpacts.C:73
 ReadImpacts.C:74
 ReadImpacts.C:75
 ReadImpacts.C:76
 ReadImpacts.C:77
 ReadImpacts.C:78
 ReadImpacts.C:79
 ReadImpacts.C:80
 ReadImpacts.C:81
 ReadImpacts.C:82
 ReadImpacts.C:83
 ReadImpacts.C:84
 ReadImpacts.C:85
 ReadImpacts.C:86
 ReadImpacts.C:87