]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWG3/muon/AnalysisTrainMuonComp.C
Completion of previous checkin
[u/mrichter/AliRoot.git] / PWG3 / muon / AnalysisTrainMuonComp.C
CommitLineData
fe9005e3 1void AnalysisTrainMuonComp(){
2 TStopwatch timer;
3 timer.Start();
4
5 printf("*** Connect to AliEn ***\n");
6 TGrid::Connect("alien://");
7
8 gSystem->Load("libTree.so");
9 gSystem->Load("libGeom.so");
10 gSystem->Load("libVMC.so");
11 gSystem->Load("libPhysics.so");
12
13 // Common packages
14 SetupPar("STEERBase");
15 gSystem->Load("libSTEERBase.so");
16 SetupPar("ESD");
17 gSystem->Load("libVMC.so");
18 gSystem->Load("libESD.so");
19 SetupPar("AOD");
20 gSystem->Load("libAOD.so");
21 SetupPar("ANALYSIS");
22 gSystem->Load("libANALYSIS.so");
23 SetupPar("ANALYSISalice");
24 gSystem->Load("libANALYSISalice.so");
25 // Analysis-specific packages
26 SetupPar("PWG3muon");
27 gSystem->Load("libPWG3muon.so");
28
29 gROOT->LoadMacro("AliAnalysisTaskAODvsESD.cxx+");
30
31 const char *collectionfile = "wn.xml";
32
33 //Usage of event tags
34 AliTagAnalysis *analysis = new AliTagAnalysis();
35
36 TChain* chain = 0x0;
37 chain = analysis->GetChainFromCollection(collectionfile,"esdTree");
38 chain->SetBranchStatus("*Calo*",0);
39
40 // Define the analysis manager
41 AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "Analysis train");
42
43 // ESD input handler
44 AliESDInputHandler *esdHandler = new AliESDInputHandler();
45 esdHandler->SetInactiveBranches("FMD CaloCluster");
46 mgr->SetInputEventHandler(esdHandler);
47
48 // AOD output handler
49 AliAODHandler* aodHandler = new AliAODHandler();
50 aodHandler->SetOutputFileName("AOD.root");
51 mgr->SetOutputEventHandler(aodHandler);
52
53 // Set of cuts for the ESD filter
54 // standard cuts
55 AliESDtrackCuts* esdTrackCutsL = new AliESDtrackCuts("AliESDtrackCuts", "Loose");
56 esdTrackCutsL->SetMinNClustersTPC(50);
57 esdTrackCutsL->SetMaxChi2PerClusterTPC(3.5);
58 esdTrackCutsL->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
59 esdTrackCutsL->SetRequireTPCRefit(kTRUE);
60 esdTrackCutsL->SetMinNsigmaToVertex(3);
61 esdTrackCutsL->SetRequireSigmaToVertex(kTRUE);
62 esdTrackCutsL->SetAcceptKingDaughters(kFALSE);
63 // hard cuts
64 AliESDtrackCuts* esdTrackCutsH = new AliESDtrackCuts("AliESDtrackCuts", "Hard");
65 esdTrackCutsH->SetMinNClustersTPC(100);
66 esdTrackCutsH->SetMaxChi2PerClusterTPC(2.0);
67 esdTrackCutsH->SetMaxCovDiagonalElements(2,2,0.5,0.5,2);
68 esdTrackCutsH->SetRequireTPCRefit(kTRUE);
69 esdTrackCutsH->SetMinNsigmaToVertex(2);
70 esdTrackCutsH->SetRequireSigmaToVertex(kTRUE);
71 esdTrackCutsH->SetAcceptKingDaughters(kFALSE);
72
73 AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
74 trackFilter->AddCuts(esdTrackCutsL);
75 trackFilter->AddCuts(esdTrackCutsH);
76
77 // first task - ESD filter task putting standard info in the output generic AOD
78 AliAnalysisTaskESDfilter *esdFilter = new AliAnalysisTaskESDfilter("ESD Filter");
79 //esdFilter->SetTrackFilter(trackFilter);
80 mgr->AddTask(esdFilter);
81
82 // second task - ESD filter task putting muon info in the output generic AOD
83 AliAnalysisTaskESDMuonFilter *esdMuonFilter = new AliAnalysisTaskESDMuonFilter("ESD Muon Filter");
84 mgr->AddTask(esdMuonFilter);
85
86 // third task - compare created AOD and exixting ESDs
87 AliAnalysisTaskAODvsESD *AODvsESD = new AliAnalysisTaskAODvsESD("aodVsEsd");
88 mgr->AddTask(AODvsESD);
89
90 // Input ESD container
8a546c82 91 AliAnalysisDataContainer *esdIn = mgr->GetCommonInputContainer();
fe9005e3 92 // Output AOD container.
8a546c82 93 AliAnalysisDataContainer *aodOut = mgr->GetCommonOutputContainer();
fe9005e3 94 // Output comparison
95 AliAnalysisDataContainer *listOut = mgr->CreateContainer("output2", TList::Class(), AliAnalysisManager::kOutputContainer, "AODvsESDoutput.root");
96
97 // Connect containers to tasks slots
98 mgr->ConnectInput(esdFilter,0,esdIn);
99 mgr->ConnectOutput(esdFilter,0,aodOut);
100
101 mgr->ConnectInput(esdMuonFilter,0,esdIn);
102 mgr->ConnectOutput(esdMuonFilter,0,aodOut);
103
104 mgr->ConnectInput(AODvsESD,0,esdIn);
105 mgr->ConnectOutput(AODvsESD,0,listOut);
106
107 // Run the analysis
108 if (mgr->InitAnalysis()){
109 mgr->PrintStatus();
110 mgr->StartAnalysis("local",chain);
111 }
112 timer.Stop();
113 timer.Print();
114}
115
116//______________________________________________________________________________
117void SetupPar(char* pararchivename)
118{
119 if (pararchivename) {
120 char processline[1024];
121 sprintf(processline,".! tar xvzf %s.par",pararchivename);
122 gROOT->ProcessLine(processline);
123 TString ocwd = gSystem->WorkingDirectory();
124 gSystem->ChangeDirectory(pararchivename);
125
126 // check for BUILD.sh and execute
127 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
128 printf("*** Building PAR archive ***\n");
129
130 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
131 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
132 return -1;
133 }
134 }
135 // check for SETUP.C and execute
136 if (!gSystem->AccessPathName("PROOF-INF/SETUP.C")) {
137 printf("*** Setup PAR archive ***\n");
138 gROOT->Macro("PROOF-INF/SETUP.C");
139 }
140
141 gSystem->ChangeDirectory(ocwd.Data());
142 printf("Current dir: %s\n", ocwd.Data());
143 }
144}
145