// --- Standard library ---
-#include <iostream.h>
-#include <stdio.h>
-
// --- AliRoot header files ---
+#include "AliRunLoader.h"
+#include "AliHeader.h"
+
+// --- PHOS header files ---
+#include "AliLog.h"
#include "AliPHOSIhepAnalyze.h"
#include "AliPHOSDigit.h"
#include "AliPHOSRecParticle.h"
-#include "AliPHOSGetter.h"
+#include "AliPHOSLoader.h"
#include "AliPHOSHit.h"
#include "AliPHOSImpact.h"
#include "AliPHOSvImpacts.h"
ClassImp(AliPHOSIhepAnalyze)
//____________________________________________________________________________
-
- AliPHOSIhepAnalyze::AliPHOSIhepAnalyze() {}
+AliPHOSIhepAnalyze::AliPHOSIhepAnalyze():
+ fRunLoader(0),
+ fFileName()
+{
+}
//____________________________________________________________________________
-
-AliPHOSIhepAnalyze::AliPHOSIhepAnalyze(Text_t * name) : fFileName(name) {}
+AliPHOSIhepAnalyze::AliPHOSIhepAnalyze(Text_t * name) :
+ fRunLoader(0),
+ fFileName(name)
+{
+ // Constructor: open a header file
+ fRunLoader = AliRunLoader::Open(fFileName);
+ if (fRunLoader == 0x0)
+ {
+ AliFatal(Form("Can not load event from file %s",name));
+ }
+}
//____________________________________________________________________________
void AliPHOSIhepAnalyze::AnalyzeCPV1(Int_t Nevents)
TList * fCpvImpacts ;
TBranch * branchCPVimpacts;
- AliPHOSGetter * please = AliPHOSGetter::GetInstance(GetFileName().Data(),"PHOS");
+
+
+ AliPHOSLoader* please = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
+ if ( please == 0 )
+ {
+ AliError(Form("Could not obtain the Loader object !"));
+ return ;
+ }
+
const AliPHOSGeometry * fGeom = please->PHOSGeometry();
- cout << "Start CPV Analysis-1. Resolutions, cluster multiplicity and lengths"<<endl;
+ AliInfo(Form("Start CPV Analysis-1. Resolutions, cluster multiplicity and lengths")) ;
for ( Int_t ievent=0; ievent<Nevents; ievent++) {
Int_t nTotalGen = 0;
Int_t nChargedGen = 0;
Int_t ntracks = gAlice->GetEvent(ievent);
- cout<<" >>>>>>>Event "<<ievent<<".<<<<<<<"<<endl;
+ AliInfo(Form(">>>>>>>Event %d .<<<<<<<", ievent)) ;
+ /******************************************************************/
+ TTree* treeH = please->TreeH();
+ if (treeH == 0x0)
+ {
+ AliError(Form("Can not get TreeH"));
+ return;
+ }
+/******************************************************************/
+
// Get branch of CPV impacts
- if (! (branchCPVimpacts =gAlice->TreeH()->GetBranch("PHOSCpvImpacts")) ) {
- cout<<" Couldn't find branch PHOSCpvImpacts. Exit."<<endl;
+ if (! (branchCPVimpacts =treeH->GetBranch("PHOSCpvImpacts")) ) {
+ AliWarning(Form("Couldn't find branch PHOSCpvImpacts. Exit.")) ;
return;
}
// The distance from the rec.point to the closest hit
// gives the coordinate resolution of the CPV
- please->Event(ievent);
+ fRunLoader->GetEvent(ievent);
TIter nextRP(please->CpvRecPoints()) ;
AliPHOSCpvRecPoint *cpvRecPoint ;
Float_t xgen, ygen, zgen;
gImpY = ygen;
}
}
- cout<<" Impact global (X,Z,Y) = "<<gImpX<<" "<<gImpZ<<" "<<gImpY<<endl;
- cout<<" Impact local (X,Z) = "<<locImpX<<" "<<locImpZ<<endl;
- cout<<" Reconstructed (X,Z) = "<<xrec<<" "<<zrec<<endl;
- cout<<" dxmin "<<dxmin<<" dzmin "<<dzmin<<endl<<endl;
+ AliInfo(Form("Impact global (X,Z,Y) = %f %f %f", gImpX, gImpZ, gImpY));
+ AliInfo(Form("Impact local (X,Z) = %f %f", locImpX, locImpZ));
+ AliInfo(Form("Reconstructed (X,Z) = %f %f", xrec, zrec));
+ AliInfo(Form("dxmin %f dzmin %f", dxmin, dzmin));
hDx ->Fill(dxmin);
hDz ->Fill(dzmin);
// hDr ->Fill(TMath::Sqrt(r2min));
}
delete [] hitsPerModule;
- cout<<"++++ Event "<<ievent<<": total "<<nTotalGen<<" impacts, "
- <<nChargedGen<<" charged impacts and "<<please->CpvRecPoints()->GetEntries()
- <<" rec. points."<<endl<<endl;
+ AliInfo(Form("++++ Event %d : total %d impacts, %d charged impacts and %d rec. points.",
+ ievent, nTotalGen, nChargedGen, please->CpvRecPoints()->GetEntries())) ;
}
// Save histograms
TList * fEmcImpacts ;
TBranch * branchEMCimpacts;
- AliPHOSGetter * please = AliPHOSGetter::GetInstance(GetFileName().Data(),"PHOS");
+ AliPHOSLoader* please = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
+ if ( please == 0 )
+ {
+ AliError(Form("Could not obtain the Loader object !"));
+ return ;
+ }
+
const AliPHOSGeometry * fGeom = please->PHOSGeometry();
- cout << "Start EMC Analysis-1. Resolutions, cluster multiplicity and lengths"<<endl;
+ AliInfo(Form("Start EMC Analysis-1. Resolutions, cluster multiplicity and lengths"));
for ( Int_t ievent=0; ievent<Nevents; ievent++) {
Int_t nTotalGen = 0;
Int_t ntracks = gAlice->GetEvent(ievent);
- cout<<" >>>>>>>Event "<<ievent<<".<<<<<<<"<<endl;
+
+ AliInfo(Form(" >>>>>>>Event %d .<<<<<<<", ievent)) ;
+
+ TTree* treeH = please->TreeH();
+ if (treeH == 0x0)
+ {
+ AliError(Form("Can not get TreeH"));
+ return;
+ }
+
// Get branch of EMC impacts
- if (! (branchEMCimpacts =gAlice->TreeH()->GetBranch("PHOSEmcImpacts")) ) {
- cout<<" Couldn't find branch PHOSEmcImpacts. Exit."<<endl;
+ if (! (branchEMCimpacts =treeH->GetBranch("PHOSEmcImpacts")) ) {
+ AliWarning(Form(" Couldn't find branch PHOSEmcImpacts. Exit."));
return;
}
// The distance from the rec.point to the closest hit
// gives the coordinate resolution of the EMC
- please->Event(ievent);
+ fRunLoader->GetEvent(ievent);
TIter nextRP(please->EmcRecPoints()) ;
AliPHOSEmcRecPoint *emcRecPoint ;
Float_t xgen, ygen, zgen;
gImpY = ygen;
}
}
- cout<<" Impact global (X,Z,Y) = "<<gImpX<<" "<<gImpZ<<" "<<gImpY<<endl;
- cout<<" Impact local (X,Z) = "<<locImpX<<" "<<locImpZ<<endl;
- cout<<" Reconstructed (X,Z) = "<<xrec<<" "<<zrec<<endl;
- cout<<" dxmin "<<dxmin<<" dzmin "<<dzmin<<endl<<endl;
+ AliInfo(Form(" Impact global (X,Z,Y) = %f %f %f", gImpX, gImpZ, gImpY));
+ AliInfo(Form(" Impact local (X,Z) = %f %f", locImpX, locImpZ));
+ AliInfo(Form(" Reconstructed (X,Z) = %f %f", xrec, zrec));
+ AliInfo(Form(" dxmin %f dzmin %f", dxmin, dzmin)) ;
hDx ->Fill(dxmin);
hDz ->Fill(dzmin);
// hDr ->Fill(TMath::Sqrt(r2min));
}
delete [] hitsPerModule;
- cout<<"++++ Event "<<ievent<<": total "<<nTotalGen<<" impacts, "
- <<please->EmcRecPoints()->GetEntriesFast()<<" Emc rec. points."<<endl<<endl;
+ AliInfo(Form("++++ Event %d : total %d impacts, %d Emc rec. points.",
+ ievent, nTotalGen, please->EmcRecPoints()->GetEntriesFast())) ;
}
// Save histograms
// 24 March 2001
- TH1F* hDrij_cpv_r = new TH1F("Drij_cpv_r","Distance between reconstructed hits in CPV",140,0,50);
- TH1F* hDrij_cpv_g = new TH1F("Drij_cpv_g","Distance between generated hits in CPV",140,0,50);
- TH1F* hDrij_cpv_ratio = new TH1F("Drij_cpv_ratio","R_{ij}^{rec}/R_{ij}^{gen} in CPV",140,0,50);
+ TH1F* hDrijCPVr = new TH1F("Drij_cpv_r","Distance between reconstructed hits in CPV",140,0,50);
+ TH1F* hDrijCPVg = new TH1F("Drij_cpv_g","Distance between generated hits in CPV",140,0,50);
+ TH1F* hDrijCPVratio = new TH1F("Drij_cpv_ratio","R_{ij}^{rec}/R_{ij}^{gen} in CPV",140,0,50);
// TH1F* hT0 = new TH1F("hT0","Type of entering particle",20000,-10000,10000);
- hDrij_cpv_r->Sumw2();
- hDrij_cpv_g->Sumw2();
- hDrij_cpv_ratio->Sumw2(); //correct treatment of errors
+ hDrijCPVr->Sumw2();
+ hDrijCPVg->Sumw2();
+ hDrijCPVratio->Sumw2(); //correct treatment of errors
TList * fCpvImpacts = new TList();
TBranch * branchCPVimpacts;
- AliPHOSGetter * please = AliPHOSGetter::GetInstance(GetFileName().Data(),"PHOS");
+ AliPHOSLoader* please = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
+ if ( please == 0 )
+ {
+ AliError(Form("Could not obtain the Loader object !"));
+ return ;
+ }
const AliPHOSGeometry * fGeom = please->PHOSGeometry();
+ fRunLoader->LoadHeader();
for (Int_t nev=0; nev<Nevents; nev++)
{
printf("\n=================== Event %10d ===================\n",nev);
- Int_t ntracks = gAlice->GetEvent(nev);
- please->Event(nev);
+ fRunLoader->GetEvent(nev);
+ Int_t ntracks = fRunLoader->GetHeader()->GetNtrack();
- Int_t nrec_cpv = 0; // Reconstructed points in event
- Int_t ngen_cpv = 0; // Impacts in event
+ Int_t nRecCPV = 0; // Reconstructed points in event
+ Int_t nGenCPV = 0; // Impacts in event
// Get branch of CPV impacts
- if (! (branchCPVimpacts =gAlice->TreeH()->GetBranch("PHOSCpvImpacts")) ) return;
+ TTree* treeH = please->TreeH();
+ if (treeH == 0x0)
+ {
+ AliError(Form("Can not get TreeH"));
+ return;
+ }
+
+ if (! (branchCPVimpacts =treeH->GetBranch("PHOSCpvImpacts")) ) return;
// Create and fill arrays of hits for each CPV module
Int_t nOfModules = fGeom->GetNModules();
for (Int_t itrack=0; itrack<ntracks; itrack++) {
branchCPVimpacts ->SetAddress(&fCpvImpacts);
- cout<<" branchCPVimpacts ->SetAddress(&fCpvImpacts) OK."<<endl;
+ AliInfo(Form(" branchCPVimpacts ->SetAddress(&fCpvImpacts) OK."));
branchCPVimpacts ->GetEntry(itrack,0);
for (Int_t iModule=0; iModule < nOfModules; iModule++) {
Int_t nsum = hitsPerModule[iModule]->GetEntriesFast();
printf("CPV module %d has %d hits\n",iModule,nsum);
- AliPHOSImpact* GenHit1;
- AliPHOSImpact* GenHit2;
+ AliPHOSImpact* genHit1;
+ AliPHOSImpact* genHit2;
Int_t irp1,irp2;
for(irp1=0; irp1< nsum; irp1++)
{
- GenHit1 = (AliPHOSImpact*)((hitsPerModule[iModule])->At(irp1));
+ genHit1 = (AliPHOSImpact*)((hitsPerModule[iModule])->At(irp1));
for(irp2 = irp1+1; irp2<nsum; irp2++)
{
- GenHit2 = (AliPHOSImpact*)((hitsPerModule[iModule])->At(irp2));
- Float_t dx = GenHit1->X() - GenHit2->X();
- Float_t dz = GenHit1->Z() - GenHit2->Z();
+ genHit2 = (AliPHOSImpact*)((hitsPerModule[iModule])->At(irp2));
+ Float_t dx = genHit1->X() - genHit2->X();
+ Float_t dz = genHit1->Z() - genHit2->Z();
Float_t dr = TMath::Sqrt(dx*dx + dz*dz);
- hDrij_cpv_g->Fill(dr);
-// cout<<"(dx dz dr): "<<dx<<" "<<dz<<" "<<endl;
+ hDrijCPVg->Fill(dr);
+// AliInfo(Form("(dx dz dr): %f %f", dx, dz));
}
}
}
//--------- Combinatoric distance between rec. hits in CPV
TObjArray* cpvRecPoints = please->CpvRecPoints();
- nrec_cpv = cpvRecPoints->GetEntriesFast();
+ nRecCPV = cpvRecPoints->GetEntriesFast();
- if(nrec_cpv)
+ if(nRecCPV)
{
- AliPHOSCpvRecPoint* RecHit1;
- AliPHOSCpvRecPoint* RecHit2;
- TIter next_cpv_rec1(cpvRecPoints);
- while(TObject* obj1 = next_cpv_rec1() )
+ AliPHOSCpvRecPoint* recHit1;
+ AliPHOSCpvRecPoint* recHit2;
+ TIter nextCPVrec1(cpvRecPoints);
+ while(TObject* obj1 = nextCPVrec1() )
{
- TIter next_cpv_rec2(cpvRecPoints);
- while (TObject* obj2 = next_cpv_rec2())
+ TIter nextCPVrec2(cpvRecPoints);
+ while (TObject* obj2 = nextCPVrec2())
{
if(!obj2->IsEqual(obj1))
{
- RecHit1 = (AliPHOSCpvRecPoint*)obj1;
- RecHit2 = (AliPHOSCpvRecPoint*)obj2;
+ recHit1 = (AliPHOSCpvRecPoint*)obj1;
+ recHit2 = (AliPHOSCpvRecPoint*)obj2;
TVector3 locpos1;
TVector3 locpos2;
- RecHit1->GetLocalPosition(locpos1);
- RecHit2->GetLocalPosition(locpos2);
+ recHit1->GetLocalPosition(locpos1);
+ recHit2->GetLocalPosition(locpos2);
Float_t dx = locpos1.X() - locpos2.X();
Float_t dz = locpos1.Z() - locpos2.Z();
Float_t dr = TMath::Sqrt(dx*dx + dz*dz);
- if(RecHit1->GetPHOSMod() == RecHit2->GetPHOSMod())
- hDrij_cpv_r->Fill(dr);
+ if(recHit1->GetPHOSMod() == recHit2->GetPHOSMod())
+ hDrijCPVr->Fill(dr);
}
}
}
}
- cout<<" Event "<<nev<<". Total of "<<ngen_cpv<<" hits, "<<nrec_cpv<<" rec.points."<<endl;
+ AliInfo(Form(" Event %d . Total of %d hits, %d rec.points.",
+ nev, nGenCPV, nRecCPV)) ;
delete [] hitsPerModule;
} // End of loop over events.
-// hDrij_cpv_g->Draw();
-// hDrij_cpv_r->Draw();
- hDrij_cpv_ratio->Divide(hDrij_cpv_r,hDrij_cpv_g);
- hDrij_cpv_ratio->Draw();
+// hDrijCPVg->Draw();
+// hDrijCPVr->Draw();
+ hDrijCPVratio->Divide(hDrijCPVr,hDrijCPVg);
+ hDrijCPVratio->Draw();
// hT0->Draw();
TH1S *hNrpX = new TH1S("hNrpX","CPV rec.point Phi-length" ,21,-0.5,20.5);
TH1S *hNrpZ = new TH1S("hNrpZ","CPV rec.point Z-length" ,21,-0.5,20.5);
- AliPHOSGetter* gime = AliPHOSGetter::GetInstance(GetFileName().Data(),"PHOS");
+ AliPHOSLoader* gime = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
+ if ( gime == 0 )
+ {
+ AliError(Form("Could not obtain the Loader object !"));
+ return ;
+ }
for(Int_t ievent=0; ievent<nevents; ievent++)
{
- gime->Event(ievent);
+ fRunLoader->GetEvent(ievent);
if(gime->CpvRecPoints()->GetEntriesFast()>1) continue;
AliPHOSCpvRecPoint* pt = (AliPHOSCpvRecPoint*)(gime->CpvRecPoints())->At(0);
hNrpX->Fill(rpMultX);
hNrpZ->Fill(rpMultZ);
hChi2->Fill(((AliPHOSEvalRecPoint*)pt)->Chi2Dof());
- cout<<"+++++ Event "<<ievent<<". (Mult,MultX,MultZ) = "<<rpMult<<" "<<rpMultX<<" "<<rpMultZ<<"+++++"<<endl;
+ AliInfo(Form("+++++ Event %d . (Mult,MultX,MultZ) = %d %d %d +++++",
+ ievent, rpMult, rpMultX, rpMultZ)) ;
}
}
-void AliPHOSIhepAnalyze::HitsCPV(TClonesArray& hits, Int_t nev)
+void AliPHOSIhepAnalyze::HitsCPV(Int_t nev)
{
// Cumulative list of charged CPV impacts in event nev.
TList * fCpvImpacts ;
TBranch * branchCPVimpacts;
- AliPHOSGetter * please = AliPHOSGetter::GetInstance(GetFileName().Data(),"PHOS");
+ AliPHOSLoader* please = dynamic_cast<AliPHOSLoader*>(fRunLoader->GetLoader("PHOSLoader"));
+ if ( please == 0 )
+ {
+ AliError(Form("Could not obtain the Loader object !"));
+ return ;
+ }
const AliPHOSGeometry * fGeom = please->PHOSGeometry();
printf("\n=================== Event %10d ===================\n",nev);
- Int_t ntracks = gAlice->GetEvent(nev);
- please->Event(nev);
+ fRunLoader->GetEvent(nev);
+ Int_t ntracks = fRunLoader->GetHeader()->GetNtrack();
-// Int_t nrec_cpv = 0; // Reconstructed points in event // 01.10.2001
-// Int_t ngen_cpv = 0; // Impacts in event
+// Int_t nRecCPV = 0; // Reconstructed points in event // 01.10.2001
+// Int_t nGenCPV = 0; // Impacts in event
// Get branch of CPV impacts
- if (! (branchCPVimpacts =gAlice->TreeH()->GetBranch("PHOSCpvImpacts")) ) return;
+ TTree* treeH = please->TreeH();
+ if (treeH == 0x0)
+ {
+ AliError(Form("Can not get TreeH"));
+ return;
+ }
+
+ if (! (branchCPVimpacts =treeH->GetBranch("PHOSCpvImpacts")) ) return;
// Create and fill arrays of hits for each CPV module
Int_t nOfModules = fGeom->GetNModules();
for (Int_t itrack=0; itrack<ntracks; itrack++) {
branchCPVimpacts ->SetAddress(&fCpvImpacts);
- cout<<" branchCPVimpacts ->SetAddress(&fCpvImpacts) OK."<<endl;
+ AliInfo(Form(" branchCPVimpacts ->SetAddress(&fCpvImpacts) OK."));
branchCPVimpacts ->GetEntry(itrack,0);
for (Int_t iModule=0; iModule < nOfModules; iModule++) {
// AliPHOSImpact* impact;
// TClonesArray* impacts;
-// AliPHOSGetter * please = AliPHOSGetter::GetInstance(GetFileName().Data(),"PHOS");
+// AliPHOSLoader * please = AliPHOSLoader::GetInstance(GetFileName().Data(),"PHOS");
// const AliPHOSGeometry * fGeom = please->PHOSGeometry();
// Int_t ntracks = gAlice->GetEvent(ievent);
// Int_t nOfModules = fGeom->GetNModules();
-// cout<<" Tracks: "<<ntracks<<" Modules: "<<nOfModules<<endl;
+// AliInfo(Form(" Tracks: "<<ntracks<<" Modules: "<<nOfModules));
// if (! (branchCPVimpacts =gAlice->TreeH()->GetBranch("PHOSCpvImpacts")) ) return;
// for (Int_t itrack=0; itrack<ntracks; itrack++) {
// branchCPVimpacts ->SetAddress(&fCpvImpacts);
-// cout<<" branchCPVimpacts ->SetAddress(&fCpvImpacts) OK."<<endl;
+// Info("AnalyzeCPV1", " branchCPVimpacts ->SetAddress(&fCpvImpacts) OK.");
// branchCPVimpacts ->GetEntry(itrack,0);
-// cout<<" branchCPVimpacts ->GetEntry(itrack,0) OK."<<endl;
+// Info(Form(" branchCPVimpacts ->GetEntry(itrack,0) OK."));
// for (Int_t iModule=0; iModule < nOfModules; iModule++) {
// impacts = (TClonesArray *)fCpvImpacts->At(iModule);
-// cout<<" fCpvImpacts->At(iModule) OK."<<endl;
+// Info(Form(" fCpvImpacts->At(iModule) OK."));
// // Do loop over impacts in the module
// for (Int_t iImpact=0; iImpact<impacts->GetEntries(); iImpact++) {
// impact=(AliPHOSImpact*)impacts->At(iImpact);
// impact->Print();
// if(IsCharged(impact->GetPid()))
// {
-// cout<<" Add charged hit..";
+// Info(Form(" Add charged hit.."));
// new(hits[hits.GetEntriesFast()]) AliPHOSImpact(*impact);
-// cout<<"done."<<endl;
+// Info(Form("done."));
// }
// }
// }
// fCpvImpacts->Clear();
// }
-// cout<<" PHOS event "<<ievent<<": "<<hits.GetEntries()<<" charged CPV hits."<<endl;
+// Info(Form(" PHOS event "<<ievent<<": "<<hits.GetEntries()<<" charged CPV hits."));
}
// }
// }
-// cout<<" PHOS module "<<iModule<<": "<<hits->GetEntries()<<" charged CPV hits."<<endl;
+// Info(Form(" PHOS module "<<iModule<<": "<<hits->GetEntries()<<" charged CPV hits."));
// }
-Bool_t AliPHOSIhepAnalyze::IsCharged(Int_t pdg_code)
+Bool_t AliPHOSIhepAnalyze::IsCharged(Int_t pdgCode)
{
// For HIJING
- cout<<" pdg_code "<<pdg_code<<endl;
- if(pdg_code==211 || pdg_code==-211 || pdg_code==321 || pdg_code==-321 || pdg_code==11 || pdg_code==-11 || pdg_code==2212 || pdg_code==-2212) return kTRUE;
+ AliInfo(Form("pdgCode %d", pdgCode));
+ if(pdgCode==211 || pdgCode==-211 || pdgCode==321 || pdgCode==-321 || pdgCode==11 || pdgCode==-11 || pdgCode==2212 || pdgCode==-2212) return kTRUE;
else
return kFALSE;
}