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