]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/muon/AnalysisTrainMuonCAF.C
bugfix #38673 (Kenneth): last pad per row was always ignored; corrected cleanup og...
[u/mrichter/AliRoot.git] / PWG3 / muon / AnalysisTrainMuonCAF.C
1 void AnalysisTrainMuonCAF(char* fileout = "AliAOD.root", char *datasetname = "myDataSet", Int_t nev=1234567890)
2 {
3 // Macro to produce a generic AOD starting from an ESD file. 
4 // The AOD is filled with two tasks: 
5 // 1- with the first one (AliAnalysisTaskESDfilter), 
6 //    all the branches of the AOD are filled apart from the muons. 
7 // 2- with the second task (AliAnalysisTaskESDMuonFilter) 
8 //    muons tracks are added to the tracks branch 
9 // This macro works on the CAF
10 // R. Arnaldi 4/5/08
11
12   gSystem->Load("libTree.so");
13   gSystem->Load("libGeom.so");
14   gSystem->Load("libVMC.so");
15   gSystem->Load("libPhysics.so");
16     
17   // Reset user processes if CAF if not responding anymore
18   // TProof::Reset("lxb6046");
19
20   // Connect to proof
21   TProof::Open("lxb6046"); // may be username@lxb6046 if user not the same as on local
22
23   // Clear packages if changing ROOT version on CAF or local
24   // gProof->ClearPackages();
25   // Enable proof debugging if needed
26   // gProof->SetLogLevel(5);
27
28   // Common packages
29   gProof->UploadPackage("STEERBase.par");
30   gProof->EnablePackage("STEERBase");
31   gProof->UploadPackage("ESD.par");
32   gProof->EnablePackage("ESD");
33   gProof->UploadPackage("AOD.par");
34   gProof->EnablePackage("AOD");
35   gProof->UploadPackage("ANALYSIS.par");
36   gProof->EnablePackage("ANALYSIS");
37   gProof->UploadPackage("ANALYSISalice.par");
38   gProof->EnablePackage("ANALYSISalice");
39   // Analysis-specific
40   // --- Enable the PWG3base Package
41   gProof->UploadPackage("PWG3muon.par");
42   gProof->EnablePackage("PWG3muon");
43
44   // Chain from files staged on CAF
45   // gROOT->LoadMacro("CreateESDChain.C");
46   // TChain* chain = CreateESDChain("ESD1503X_v1.txt",3);
47   // TChain* chain = CreateESDChain("ESD82XX_30Kshort.txt", 10);
48   
49   // Chain from datasets
50   gROOT->LoadMacro("CreateChainFromDataSet.C");
51   ds = gProof->GetDataSet(datasetname)->GetStagedSubset();
52   chain = CreateChainFromDataSet(ds, "esdTree");   
53   
54   // Make the analysis manager
55   AliAnalysisManager *mgr  = new AliAnalysisManager("Analysis Train", "Analysis train");
56   
57   // ESD input handler
58   AliESDInputHandler *esdHandler = new AliESDInputHandler();
59   esdHandler->SetInactiveBranches("FMD CaloCluster");
60   
61   // AOD output handler
62   AliAODHandler* aodHandler   = new AliAODHandler();
63   aodHandler->SetOutputFileName(fileout);
64   //aodHandler->SetOutputFileName("AOD.root");
65
66   mgr->SetInputEventHandler(esdHandler);
67   mgr->SetOutputEventHandler(aodHandler);
68   
69   // Set of cuts plugged into the ESD filter
70   // 
71   // standard
72   AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose");
73   esdTrackCutsL->SetMinNClustersTPC(50);
74   esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);
75   esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
76   esdTrackCutsL->SetRequireTPCRefit(kTRUE);
77   esdTrackCutsL->SetMinNsigmaToVertex(3);
78   esdTrackCutsL->SetRequireSigmaToVertex(kTRUE);
79   esdTrackCutsL->SetAcceptKingDaughters(kFALSE);
80   //
81   // hard cuts
82   AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard");
83   esdTrackCutsH->SetMinNClustersTPC(100);
84   esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0);
85   esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
86   esdTrackCutsH->SetRequireTPCRefit(kTRUE);
87   esdTrackCutsH->SetMinNsigmaToVertex(2);
88   esdTrackCutsH->SetRequireSigmaToVertex(kTRUE);
89   esdTrackCutsH->SetAcceptKingDaughters(kFALSE);
90   esdTrackCutsH->SetPRange(0.,2.);
91   //
92   //  muon cuts
93   AliESDMuonTrackCuts* esdMuonTrackCuts = new AliESDMuonTrackCuts("AliESDMuonTrackCuts", "test");
94   esdMuonTrackCuts->SetPRange(0.,20.);
95   //esdMuonTrackCuts->SetPtRange(0.,0.5);   // example of kinematic cuts that can be applied
96   
97   // track filter (to reject tracks not surviving the cuts - refers to all particles apart from muons)
98   AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
99   trackFilter->AddCuts(esdTrackCutsH);
100   
101   // muon track filter  (to reject muon tracks not surviving the cuts)
102   AliAnalysisFilter* trackMuonFilter = new AliAnalysisFilter("trackMuonFilter");
103   trackMuonFilter->AddCuts(esdMuonTrackCuts);
104
105   // ESD filter task putting standard info to output generic AOD 
106   AliAnalysisTaskESDfilter *esdfilter = new AliAnalysisTaskESDfilter("ESD Filter");
107   //esdfilter->SetTrackFilter(trackFilter);
108   esdfilter->SetDebugLevel(10);
109   mgr->AddTask(esdfilter);
110   
111   // ESD filter task putting muon info to output generic AOD 
112   AliAnalysisTaskESDMuonFilter *esdmuonfilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
113   esdmuonfilter->SetTrackFilter(trackMuonFilter);
114   mgr->AddTask(esdmuonfilter);
115
116   // Containers for input/output
117   AliAnalysisDataContainer *cin_esd = mgr->CreateContainer("cESD",TChain::Class(), AliAnalysisManager::kInputContainer);
118   // Output AOD container. 
119   AliAnalysisDataContainer *cout_aod = mgr->CreateContainer("cAOD", TTree::Class(), AliAnalysisManager::kOutputContainer, "default");
120                                                             
121   // Connect containers to tasks slots
122   mgr->ConnectInput  (esdfilter,  0, cin_esd  );
123   mgr->ConnectOutput (esdfilter,  0, cout_aod );
124
125   mgr->ConnectInput  (esdmuonfilter,  0, cin_esd);
126   mgr->ConnectOutput (esdmuonfilter,  0, cout_aod );
127
128   //
129   // Run the analysis
130   //    
131   if (mgr->InitAnalysis()) {
132       mgr->PrintStatus();
133       mgr->StartAnalysis("proof",chain,nev);
134   }   
135 }
136