void AnalysisTrainMuonLocal(char* filein = "AliESDs.root",
char* fileout = "AliAODs.root",
Int_t nev=123456789)
// Macro to produce a generic AOD starting from an ESD file.
// The AOD is filled with two tasks:
// 1- with the first one (AliAnalysisTaskESDfilter),
// all the branches of the AOD are filled apart from the muons.
// 2- with the second task (AliAnalysisTaskESDMuonFilter)
// muons tracks are added to the tracks branch
// 3- with a third task (AliAnalysisTaskTagCreator)
// aod tags are created
// There is the possibility to apply cuts on the tracks and muon tracks in
// order to reject them before filling the AOD
// This macro works locally
{
gSystem->Load("libTree.so");
gSystem->Load("libGeom.so");
gSystem->Load("libVMC.so");
gSystem->Load("libPhysics.so");
gSystem->Load("${ALICE_ROOT}/lib/tgt_${ALICE_TARGET}/libPWGmuon.so"); // for aliroot based analysis
// Par files for a par based analysis
// SetupPar("STEERBase");
// SetupPar("ESD");
// SetupPar("AOD");
// SetupPar("ANALYSIS");
// SetupPar("ANALYSISalice");
// SetupPar("PWG3muon");
// Creating ESD Tags on the fly
// The recreation of the ESD tag file is only needed in order to copy the infos on
// run/LHC parameters into the AOD tag file. If the ESD tag file is not recreated, the
// run/LHC info in the AOD tag file will be empty.
AliESDTagCreator *t = new AliESDTagCreator();
t->SetStorage(0);
t->ReadLocalCollection(".");
// Input ESD file
TChain* chain = new TChain("esdTree");
chain->Add(filein);
// Define the analysis manager
AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "Analysis train");
// ESD input handler
AliESDInputHandler *esdHandler = new AliESDInputHandler();
esdHandler->SetReadTags();
// AOD output handler
AliAODHandler* aodHandler = new AliAODHandler();
aodHandler->SetOutputFileName(fileout);
mgr->SetInputEventHandler(esdHandler);
mgr->SetOutputEventHandler(aodHandler);
// Set of cuts for the ESD filters.
// Only tracks surviving the cuts will be copied into the AOD
//
// standard cut for non-muon tracks
AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose");
esdTrackCutsL->SetMinNClustersTPC(50);
esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);
esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
esdTrackCutsL->SetRequireTPCRefit(kTRUE);
esdTrackCutsL->SetMinNsigmaToVertex(3);
esdTrackCutsL->SetRequireSigmaToVertex(kTRUE);
esdTrackCutsL->SetAcceptKingDaughters(kFALSE);
//
// hard cuts for non-muon tracks
AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard");
esdTrackCutsH->SetMinNClustersTPC(100);
esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0);
esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
esdTrackCutsH->SetRequireTPCRefit(kTRUE);
esdTrackCutsH->SetMinNsigmaToVertex(2);
esdTrackCutsH->SetRequireSigmaToVertex(kTRUE);
esdTrackCutsH->SetAcceptKingDaughters(kFALSE);
esdTrackCutsH->SetPRange(0.,2.);
//
// muon cuts
AliESDMuonTrackCuts* esdMuonTrackCuts = new AliESDMuonTrackCuts("AliESDMuonTrackCuts", "test");
esdMuonTrackCuts->SetPRange(0.,12.);
esdMuonTrackCuts->SetPtRange(0.,2.); // examples of kinematic cuts that can be applied
esdMuonTrackCuts->SetHistogramsOn(kTRUE); // methods to draw control histos
esdMuonTrackCuts->DefineHistograms();
esdMuonTrackCuts->DrawHistograms();
// track filter (to reject tracks not surviving the previously defined cuts -
// refers to all particles apart from muons)
AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
trackFilter->AddCuts(esdTrackCutsH);
// muon track filter (to reject muon tracks not surviving the previously defined cuts)
AliAnalysisFilter* trackMuonFilter = new AliAnalysisFilter("trackMuonFilter");
trackMuonFilter->AddCuts(esdMuonTrackCuts);
// ESD filter task to fill standard info in the output generic AOD
AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
//esdfilter->SetTrackFilter(trackFilter); //uncomment to apply cuts on the tracks
esdfilter->SetDebugLevel(10);
mgr->AddTask(esdfilter);
// ESD filter task filling muon info in the output generic AOD
AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
//esdmuonfilter->SetTrackFilter(trackMuonFilter); //uncomment to apply cuts on the muon tracks
mgr->AddTask(esdmuonfilter);
// Tag Creator
AliAnalysisTaskTagCreator* tagTask = new AliAnalysisTaskTagCreator("AOD Tag Creator");
mgr->AddTask(tagTask);
// Input container
AliAnalysisDataContainer *cin_esd = mgr->GetCommonInputContainer();
// Output AOD container.
AliAnalysisDataContainer *cout_aod = mgr->GetCommonOutputContainer();
// Tag container
AliAnalysisDataContainer *cout_tags = mgr->CreateContainer("cTag",TTree::Class(),
AliAnalysisManager::kOutputContainer, "AOD.tag.root");
// Connect containers to tasks slots
mgr->ConnectInput (esdfilter, 0, cin_esd );
mgr->ConnectOutput (esdfilter, 0, cout_aod );
mgr->ConnectInput (esdmuonfilter, 0, cin_esd);
mgr->ConnectOutput (esdmuonfilter, 0, cout_aod );
mgr->ConnectInput (tagTask, 0, cin_esd);
mgr->ConnectOutput (tagTask, 1, cout_tags);
//
// Run the analysis
//
if (mgr->InitAnalysis()) {
mgr->PrintStatus();
mgr->StartAnalysis("local",chain,nev);
}
}
//______________________________________________________________________________
void SetupPar(char* pararchivename)
{
if (pararchivename) {
char processline[1024];
sprintf(processline,".! tar xvzf %s.par",pararchivename);
gROOT->ProcessLine(processline);
TString ocwd = gSystem->WorkingDirectory();
gSystem->ChangeDirectory(pararchivename);
// check for BUILD.sh and execute
if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
printf("*******************************\n");
printf("*** Building PAR archive ***\n");
printf("*******************************\n");
if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
Error("runProcess","Cannot Build the PAR Archive! - Abort!");
return -1;
}
}
// check for SETUP.C and execute
if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
printf("*******************************\n");
printf("*** Setup PAR archive ***\n");
printf("*******************************\n");
gROOT->Macro("PROOF-INF/SETUP.C");
}
gSystem->ChangeDirectory(ocwd.Data());
printf("Current dir: %s\n", ocwd.Data());
}
}
AnalysisTrainMuonLocal.C:1 AnalysisTrainMuonLocal.C:2 AnalysisTrainMuonLocal.C:3 AnalysisTrainMuonLocal.C:4 AnalysisTrainMuonLocal.C:5 AnalysisTrainMuonLocal.C:6 AnalysisTrainMuonLocal.C:7 AnalysisTrainMuonLocal.C:8 AnalysisTrainMuonLocal.C:9 AnalysisTrainMuonLocal.C:10 AnalysisTrainMuonLocal.C:11 AnalysisTrainMuonLocal.C:12 AnalysisTrainMuonLocal.C:13 AnalysisTrainMuonLocal.C:14 AnalysisTrainMuonLocal.C:15 AnalysisTrainMuonLocal.C:16 AnalysisTrainMuonLocal.C:17 AnalysisTrainMuonLocal.C:18 AnalysisTrainMuonLocal.C:19 AnalysisTrainMuonLocal.C:20 AnalysisTrainMuonLocal.C:21 AnalysisTrainMuonLocal.C:22 AnalysisTrainMuonLocal.C:23 AnalysisTrainMuonLocal.C:24 AnalysisTrainMuonLocal.C:25 AnalysisTrainMuonLocal.C:26 AnalysisTrainMuonLocal.C:27 AnalysisTrainMuonLocal.C:28 AnalysisTrainMuonLocal.C:29 AnalysisTrainMuonLocal.C:30 AnalysisTrainMuonLocal.C:31 AnalysisTrainMuonLocal.C:32 AnalysisTrainMuonLocal.C:33 AnalysisTrainMuonLocal.C:34 AnalysisTrainMuonLocal.C:35 AnalysisTrainMuonLocal.C:36 AnalysisTrainMuonLocal.C:37 AnalysisTrainMuonLocal.C:38 AnalysisTrainMuonLocal.C:39 AnalysisTrainMuonLocal.C:40 AnalysisTrainMuonLocal.C:41 AnalysisTrainMuonLocal.C:42 AnalysisTrainMuonLocal.C:43 AnalysisTrainMuonLocal.C:44 AnalysisTrainMuonLocal.C:45 AnalysisTrainMuonLocal.C:46 AnalysisTrainMuonLocal.C:47 AnalysisTrainMuonLocal.C:48 AnalysisTrainMuonLocal.C:49 AnalysisTrainMuonLocal.C:50 AnalysisTrainMuonLocal.C:51 AnalysisTrainMuonLocal.C:52 AnalysisTrainMuonLocal.C:53 AnalysisTrainMuonLocal.C:54 AnalysisTrainMuonLocal.C:55 AnalysisTrainMuonLocal.C:56 AnalysisTrainMuonLocal.C:57 AnalysisTrainMuonLocal.C:58 AnalysisTrainMuonLocal.C:59 AnalysisTrainMuonLocal.C:60 AnalysisTrainMuonLocal.C:61 AnalysisTrainMuonLocal.C:62 AnalysisTrainMuonLocal.C:63 AnalysisTrainMuonLocal.C:64 AnalysisTrainMuonLocal.C:65 AnalysisTrainMuonLocal.C:66 AnalysisTrainMuonLocal.C:67 AnalysisTrainMuonLocal.C:68 AnalysisTrainMuonLocal.C:69 AnalysisTrainMuonLocal.C:70 AnalysisTrainMuonLocal.C:71 AnalysisTrainMuonLocal.C:72 AnalysisTrainMuonLocal.C:73 AnalysisTrainMuonLocal.C:74 AnalysisTrainMuonLocal.C:75 AnalysisTrainMuonLocal.C:76 AnalysisTrainMuonLocal.C:77 AnalysisTrainMuonLocal.C:78 AnalysisTrainMuonLocal.C:79 AnalysisTrainMuonLocal.C:80 AnalysisTrainMuonLocal.C:81 AnalysisTrainMuonLocal.C:82 AnalysisTrainMuonLocal.C:83 AnalysisTrainMuonLocal.C:84 AnalysisTrainMuonLocal.C:85 AnalysisTrainMuonLocal.C:86 AnalysisTrainMuonLocal.C:87 AnalysisTrainMuonLocal.C:88 AnalysisTrainMuonLocal.C:89 AnalysisTrainMuonLocal.C:90 AnalysisTrainMuonLocal.C:91 AnalysisTrainMuonLocal.C:92 AnalysisTrainMuonLocal.C:93 AnalysisTrainMuonLocal.C:94 AnalysisTrainMuonLocal.C:95 AnalysisTrainMuonLocal.C:96 AnalysisTrainMuonLocal.C:97 AnalysisTrainMuonLocal.C:98 AnalysisTrainMuonLocal.C:99 AnalysisTrainMuonLocal.C:100 AnalysisTrainMuonLocal.C:101 AnalysisTrainMuonLocal.C:102 AnalysisTrainMuonLocal.C:103 AnalysisTrainMuonLocal.C:104 AnalysisTrainMuonLocal.C:105 AnalysisTrainMuonLocal.C:106 AnalysisTrainMuonLocal.C:107 AnalysisTrainMuonLocal.C:108 AnalysisTrainMuonLocal.C:109 AnalysisTrainMuonLocal.C:110 AnalysisTrainMuonLocal.C:111 AnalysisTrainMuonLocal.C:112 AnalysisTrainMuonLocal.C:113 AnalysisTrainMuonLocal.C:114 AnalysisTrainMuonLocal.C:115 AnalysisTrainMuonLocal.C:116 AnalysisTrainMuonLocal.C:117 AnalysisTrainMuonLocal.C:118 AnalysisTrainMuonLocal.C:119 AnalysisTrainMuonLocal.C:120 AnalysisTrainMuonLocal.C:121 AnalysisTrainMuonLocal.C:122 AnalysisTrainMuonLocal.C:123 AnalysisTrainMuonLocal.C:124 AnalysisTrainMuonLocal.C:125 AnalysisTrainMuonLocal.C:126 AnalysisTrainMuonLocal.C:127 AnalysisTrainMuonLocal.C:128 AnalysisTrainMuonLocal.C:129 AnalysisTrainMuonLocal.C:130 AnalysisTrainMuonLocal.C:131 AnalysisTrainMuonLocal.C:132 AnalysisTrainMuonLocal.C:133 AnalysisTrainMuonLocal.C:134 AnalysisTrainMuonLocal.C:135 AnalysisTrainMuonLocal.C:136 AnalysisTrainMuonLocal.C:137 AnalysisTrainMuonLocal.C:138 AnalysisTrainMuonLocal.C:139 AnalysisTrainMuonLocal.C:140 AnalysisTrainMuonLocal.C:141 AnalysisTrainMuonLocal.C:142 AnalysisTrainMuonLocal.C:143 AnalysisTrainMuonLocal.C:144 AnalysisTrainMuonLocal.C:145 AnalysisTrainMuonLocal.C:146 AnalysisTrainMuonLocal.C:147 AnalysisTrainMuonLocal.C:148 AnalysisTrainMuonLocal.C:149 AnalysisTrainMuonLocal.C:150 AnalysisTrainMuonLocal.C:151 AnalysisTrainMuonLocal.C:152 AnalysisTrainMuonLocal.C:153 AnalysisTrainMuonLocal.C:154 AnalysisTrainMuonLocal.C:155 AnalysisTrainMuonLocal.C:156 AnalysisTrainMuonLocal.C:157 AnalysisTrainMuonLocal.C:158 AnalysisTrainMuonLocal.C:159 AnalysisTrainMuonLocal.C:160 AnalysisTrainMuonLocal.C:161 AnalysisTrainMuonLocal.C:162 AnalysisTrainMuonLocal.C:163 AnalysisTrainMuonLocal.C:164 AnalysisTrainMuonLocal.C:165 AnalysisTrainMuonLocal.C:166 AnalysisTrainMuonLocal.C:167 AnalysisTrainMuonLocal.C:168 AnalysisTrainMuonLocal.C:169 AnalysisTrainMuonLocal.C:170 AnalysisTrainMuonLocal.C:171 AnalysisTrainMuonLocal.C:172 AnalysisTrainMuonLocal.C:173 AnalysisTrainMuonLocal.C:174