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 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; iModuleAt(iModule); // Do loop over impacts in the module for (Int_t iImpact=0; iImpactGetEntries(); iImpact++) { impact=(AliPHOSImpact*)impacts->At(iImpact); printf("EMC module %d: ",iModule); impact->Print(); } } // Do loop over CPV modules for (iModule=0; iModuleAt(iModule); // Do loop over impacts in the module for (Int_t iImpact=0; iImpactGetEntries(); iImpact++) { impact=(AliPHOSImpact*)impacts->At(iImpact); printf("CPV module %d: ",iModule); impact->Print(); } } // Do loop over PPSD modules for (iModule=0; iModuleAt(iModule); // Do loop over impacts in the module for (Int_t iImpact=0; iImpactGetEntries(); iImpact++) { impact=(AliPHOSImpact*)impacts->At(iImpact); printf("PPSD Module %d: ",iModule); impact->Print(); } } } } }