mom2 = *(part2->Momentum());
//Select good pair (good phi, pt cuts, aperture and invariant mass)
if(GetNeutralMesonSelection()->SelectPair(mom1, mom2)){
- if(GetDebug() > 1)printf("AliAnaParticleIsolation::CheckInvMass() - Selected gamma pair: pt %f, phi %f, eta%f",(mom1+mom2).Pt(), (mom1+mom2).Phi()*180./3.1416, (mom1+mom2).Eta());
+ if(GetDebug() > 1)printf("AliAnaParticleIsolation::CheckInvMass() - Selected gamma pair: pt %f, phi %f, eta%f\n",(mom1+mom2).Pt(), (mom1+mom2).Phi()*180./3.1416, (mom1+mom2).Eta());
return kTRUE ;
}
}//loop
//Loop on AOD branch, filled previously in AliAnaPhoton
TLorentzVector mom ;
-
- for(Int_t iaod = 0; iaod < GetInputAODBranch()->GetEntriesFast(); iaod++){
+ Int_t naod = GetInputAODBranch()->GetEntriesFast();
+ if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - Input aod branch entries %d\n", naod);
+ for(Int_t iaod = 0; iaod < naod; iaod++){
AliAODPWG4ParticleCorrelation * aodinput = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
//If too small or too large pt, skip
n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
GetIsolationCut()->MakeIsolationCut(GetAODCTS(),pl,fVertex, kTRUE, aodinput, GetAODRefArrayName(), n,nfrac,coneptsum, isolated);
aodinput->SetIsolated(isolated);
-
-
+ if(GetDebug() > 1 && isolated) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() : Particle %d IS ISOLATED \n",iaod);
+
}//loop
- if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs ");
+ if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillAOD() - End fill AODs \n");
}
//Loop on stored AOD
Int_t naod = GetInputAODBranch()->GetEntriesFast();
- if(GetDebug() > 0) printf(" AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
+ if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Histo aod branch entries %d\n", naod);
for(Int_t iaod = 0; iaod < naod ; iaod++){
AliAODPWG4ParticleCorrelation* aod = (AliAODPWG4ParticleCorrelation*) (GetInputAODBranch()->At(iaod));
//In case a more strict IC is needed in the produced AOD
n=0; nfrac = 0; isolated = kFALSE; coneptsum = 0;
GetIsolationCut()->MakeIsolationCut(reftracks, refclusters, fVertex, kFALSE, aod, "", n,nfrac,coneptsum, isolated);
- fhConeSumPt->Fill(ptcluster,coneptsum);
- }
+ fhConeSumPt->Fill(ptcluster,coneptsum);
+ if(GetDebug() > 0) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Energy Sum in Isolation Cone %2.2f\n", coneptsum);
+ }
//Fill pt distribution of particles in cone
//Tracks
}
}
- if(!fReMakeIC) fhConeSumPt->Fill(ptcluster,coneptsum);
+ if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d Energy Sum in Isolation Cone %2.2f\n", iaod, coneptsum);
+
+ if(!fReMakeIC) fhConeSumPt->Fill(ptcluster,coneptsum);
if(isolation){
+
+ if(GetDebug() > 1) printf("AliAnaParticleIsolation::MakeAnalysisFillHistograms() - Particle %d ISOLATED, fill histograms\n", iaod);
+
fhPtIso ->Fill(ptcluster);
fhPhiIso ->Fill(ptcluster,phicluster);
fhEtaIso ->Fill(ptcluster,etacluster);
Double_t etaJet = jet.Eta();
Double_t etaLead = leading.Eta();
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"Pt"+lastname))->
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"Pt"+lastname))->
Fill(ptTrig,ptJet);
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"RatioPt"+lastname))->
+
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"RatioPt"+lastname))->
Fill(ptTrig,ptJet/ptTrig);
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"LeadingRatioPt"+lastname))->
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"LeadingRatioPt"+lastname))->
Fill(ptTrig,ptLead/ptJet);
-// dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"Phi"+lastname))->
+// dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"Phi"+lastname))->
// Fill(ptTrig,phiJet);
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"DeltaPhi"+lastname))->
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"DeltaPhi"+lastname))->
Fill(ptTrig,phiJet-phiTrig);
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"LeadingDeltaPhi"+lastname))->
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"LeadingDeltaPhi"+lastname))->
Fill(ptTrig,phiJet-phiLead);
- // dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"Eta"+lastname))->
+ // dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"Eta"+lastname))->
// Fill(ptTrig,etaJet);
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"DeltaEta"+lastname))->
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"DeltaEta"+lastname))->
Fill(ptTrig,etaJet-etaTrig);
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"LeadingDeltaEta"+lastname))->
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"LeadingDeltaEta"+lastname))->
Fill(ptTrig,etaJet-etaLead);
//Construct fragmentation function
nTracksInCone++;
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"FFz"+lastname))
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"FFz"+lastname))
->Fill(ptTrig,p3.Pt()/ptTrig);
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"FFxi"+lastname))
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"FFxi"+lastname))
->Fill(ptTrig,TMath::Log(ptTrig/p3.Pt()));
- dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"FFpt"+lastname))
+ dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"FFpt"+lastname))
->Fill(ptTrig,p3.Pt());
}//track loop
- if(nTracksInCone > 0) dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(type+"NTracksInCone"+lastname))
+ if(nTracksInCone > 0) dynamic_cast<TH2F*>(GetOutputContainer()->FindObject(GetAddedHistogramsStringToName()+type+"NTracksInCone"+lastname))
->Fill(ptTrig, nTracksInCone);
}
} //icone
}//If we want to study any cone or pt threshold
- if(GetDebug()>2){
+ if(GetDebug() > 2){
printf("AliAnaParticleJetLeadingConeCorrelation::GetCreateOutputObjects() - All histograms names : \n");
for(Int_t i = 0 ; i< fOutCont->GetEntries(); i++)
- printf("Histo i %d name %s",i,((fOutCont->At(i))->GetName()));
+ printf("Histo i %d name %s\n",i,((fOutCont->At(i))->GetName()));
//cout<< (fOutCont->At(i))->GetName()<<endl;
}
AliMCEventHandler* mcHandler = new AliMCEventHandler();
mcHandler->SetReadTR(kFALSE);//Do not search TrackRef file
mgr->SetMCtruthEventHandler(mcHandler);
+ if( kInputData == "MC") mgr->SetInputEventHandler(NULL);
}
// AOD output handler
skipped++ ;
}
}
- printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped*100) ;
+ printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped) ;
}
else {
TString input = "AliESDs.root" ;
-/* $Id: anaGammaAnalysis.C 25095 2008-04-11 12:54:47Z schutz $ */
-/* $Log$
-/* Revision 1.2 2007/12/13 09:45:45 gustavo
-/* Scaling option and more comentaries added
-/*
-/* Revision 1.1 2007/12/07 14:13:02 gustavo
-/* Example macros for execution and configuration of the analysis
-/* */
-
-//---------------------------------------------------
+/* $Id: $ */
+//--------------------------------------------------
// Example macro to do analysis with the
// AliAnalysisTaksSE
// Can be executed with Root and AliRoot
//Settings to read locally several files, only for "mLocal" mode
//The different values are default, they can be set with environmental
//variables: INDIR, PATTERN, NEVENT, respectivelly
-char * kInDir = "/user/data";
-char * kPattern = ""; // Data are in diles /data/Run0,
-// /Data/Run1 ...
+char * kInDir = "/user/data/files/";
+char * kPattern = ""; // Data are in files kInDir/kPattern+i
Int_t kEvent = 1; // Number of files
//---------------------------------------------------------------------------
//Collection file for grid analysis
//---------------------------------------------------------------------------
const Bool_t kMC = kTRUE; //With real data kMC = kFALSE
-const TString kInputData = "ESD";
+const TString kInputData = "ESD";//ESD, AOD, MC
+TString kTreeName = "esdTree";
void anaExampleTask(Int_t mode=mLocal)
{
//-------------------------------------------------------------------------------------------------
//Create chain from ESD and from cross sections files, look below for options.
//-------------------------------------------------------------------------------------------------
- TChain *chain = new TChain("esdTree") ;
+ if(kInputData == "ESD") kTreeName = "esdTree" ;
+ else if(kInputData == "AOD") kTreeName = "aodTree" ;
+ else if (kInputData == "MC") kTreeName = "TE" ;
+ else {
+ cout<<"Wrong data type "<<kInputData<<endl;
+ break;
+ }
+
+ TChain *chain = new TChain(kTreeName) ;
TChain * chainxs = new TChain("Xsection") ;
CreateChain(mode, chain, chainxs);
//-------------------------------------
AliAnalysisManager *mgr = new AliAnalysisManager("Manager", "Manager");
// MC handler
- if(kMC){
+ if(kMC || kInputData == "MC"){
AliMCEventHandler* mcHandler = new AliMCEventHandler();
mcHandler->SetReadTR(kFALSE);//Do not search TrackRef file
mgr->SetMCtruthEventHandler(mcHandler);
+ if( kInputData == "MC") mgr->SetInputEventHandler(NULL);
}
// AOD output handler
mgr->SetInputEventHandler(aodHandler);
}
- //mgr->SetDebugLevel(10); // For debugging
+ //mgr->SetDebugLevel(-1); // For debugging
//-------------------------------------------------------------------------
//Define task, put here any other task that you want to use.
AliAnaScale * scale = new AliAnaScale("scale") ;
scale->Set(xsection/ntrials/kNumberOfEventsPerFile/nfiles) ;
+ scale->MakeSumw2(kFALSE);//If you want histograms with error bars set to kTRUE
+ //scale->SetDebugLevel(2);
mgr->AddTask(scale);
-
+
AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("histosscaled", TList::Class(),
AliAnalysisManager::kOutputContainer, "gammahistosscaled.root");
mgr->ConnectInput (scale, 0, coutput2);
mgr->InitAnalysis();
mgr->PrintStatus();
mgr->StartAnalysis(smode.Data(),chain);
+
+ cout <<" Analysis ended sucessfully "<< endl ;
+
}
else cout << "Chain was not produced ! "<<endl;
//gSystem->Load("libANALYSIS");
//gSystem->Load("libANALYSISalice");
//gSystem->Load("libPWG4PartCorrBase");
- //gSystem->Load("libPWG4PartCorrDep");
+ //gSystem->Load("libPWG4PartCorrDep");
//--------------------------------------------------------
//If you want to use root and par files from aliroot
TString processline(Form(".! make %s", parpar.Data())) ;
gROOT->ProcessLine(processline.Data()) ;
gSystem->ChangeDirectory(cdir) ;
- processline = Form(".! mv /tmp/%s .", parpar.Data()) ;
+ //processline = Form(".! mv /tmp/%s .", parpar.Data()) ;
+ processline = Form(".! mv $ALICE_ROOT/%s .", parpar.Data()) ;
gROOT->ProcessLine(processline.Data()) ;
}
if ( gSystem->AccessPathName(pararchivename) ) {
cout<<"INDIR : "<<kInDir<<endl;
cout<<"NEVENT : "<<kEvent<<endl;
cout<<"PATTERN: " <<kPattern<<endl;
-
+
+ TString datafile="";
+ if(kInputData == "ESD") datafile = "AliESDs.root" ;
+ else if(kInputData == "AOD") datafile = "aod.root" ;
+ else if(kInputData == "MC") datafile = "galice.root" ;
+
//Loop on ESD files, add them to chain
Int_t event =0;
Int_t skipped=0 ;
char filexs[120] ;
for (event = 0 ; event < kEvent ; event++) {
- sprintf(file, "%s/%s%d/AliESDs.root", kInDir,kPattern,event) ;
+ sprintf(file, "%s/%s%d/%s", kInDir,kPattern,event,datafile.Data()) ;
sprintf(filexs, "%s/%s%d/%s", kInDir,kPattern,event,kXSFileName) ;
TFile * fESD = 0 ;
//Check if file exists and add it, if not skip it
if ( fESD = TFile::Open(file)) {
- if ( fESD->Get("esdTree") ) {
+ if ( fESD->Get(kTreeName) ) {
printf("++++ Adding %s\n", file) ;
chain->AddFile(file);
chainxs->Add(filexs) ;
skipped++ ;
}
}
- printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped*100) ;
+ printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped) ;
}
else {
TString input = "AliESDs.root" ;
//Settings to read locally several files, only for "mLocal" mode
//The different values are default, they can be set with environmental
//variables: INDIR, PATTERN, NEVENT, respectivelly
-char * kInDir = "/user/data/files";
-char * kPattern = ""; // Data are in files kInDir/kPattern+i
+char * kInDir = "/user/data/files/";
+char * kPattern = ""; // Data are in files kInDir/kPattern+i
Int_t kEvent = 1; // Number of files
//---------------------------------------------------------------------------
//Collection file for grid analysis
//---------------------------------------------------------------------------
const Bool_t kMC = kTRUE; //With real data kMC = kFALSE
-const TString kInputData = "ESD";
+const TString kInputData = "ESD";//ESD, AOD, MC
+TString kTreeName = "esdTree";
+
void anaPartCorrJetAn(Int_t mode=mLocal, TString configName = "ConfigAnalysisGammaJetFinderCorrelation")
{
// Main
//-------------------------------------------------------------------------------------------------
//Create chain from ESD and from cross sections files, look below for options.
//-------------------------------------------------------------------------------------------------
- TChain *chain = new TChain("esdTree") ;
+ if(kInputData == "ESD") kTreeName = "esdTree" ;
+ else if(kInputData == "AOD") kTreeName = "aodTree" ;
+ else if (kInputData == "MC") kTreeName = "TE" ;
+ else {
+ cout<<"Wrong data type "<<kInputData<<endl;
+ break;
+ }
+
+ TChain *chain = new TChain(kTreeName) ;
TChain * chainxs = new TChain("Xsection") ;
CreateChain(mode, chain, chainxs);
//-------------------------------------
AliAnalysisManager *mgr = new AliAnalysisManager("Manager", "Manager");
// MC handler
- if(kMC){
+ if(kMC || kInputData == "MC"){
AliMCEventHandler* mcHandler = new AliMCEventHandler();
mcHandler->SetReadTR(kFALSE);//Do not search TrackRef file
- mgr->SetMCtruthEventHandler(mcHandler);
+ mgr->SetMCtruthEventHandler(mcHandler);
+ if( kInputData == "MC") mgr->SetInputEventHandler(NULL);
}
// AOD output handler
cout<<"INDIR : "<<kInDir<<endl;
cout<<"NEVENT : "<<kEvent<<endl;
cout<<"PATTERN: " <<kPattern<<endl;
-
+
+ TString datafile="";
+ if(kInputData == "ESD") datafile = "AliESDs.root" ;
+ else if(kInputData == "AOD") datafile = "aod.root" ;
+ else if(kInputData == "MC") datafile = "galice.root" ;
+
//Loop on ESD files, add them to chain
Int_t event =0;
Int_t skipped=0 ;
char filexs[120] ;
for (event = 0 ; event < kEvent ; event++) {
- sprintf(file, "%s/%s%d/AliESDs.root", kInDir,kPattern,event) ;
+ sprintf(file, "%s/%s%d/%s", kInDir,kPattern,event,datafile.Data()) ;
sprintf(filexs, "%s/%s%d/%s", kInDir,kPattern,event,kXSFileName) ;
TFile * fESD = 0 ;
//Check if file exists and add it, if not skip it
if ( fESD = TFile::Open(file)) {
- if ( fESD->Get("esdTree") ) {
+ if ( fESD->Get(kTreeName) ) {
printf("++++ Adding %s\n", file) ;
chain->AddFile(file);
chainxs->Add(filexs) ;
skipped++ ;
}
}
- printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped*100) ;
+ printf("number of entries # %lld, skipped %d\n", chain->GetEntries(), skipped) ;
}
else {
TString input = "AliESDs.root" ;