]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/muon/AnalysisTrainMuonComp.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWG / muon / AnalysisTrainMuonComp.C
1 void AnalysisTrainMuonComp(){
2   TStopwatch timer;
3   timer.Start();
4
5   printf("*** Connect to AliEn ***\n");
6   TGrid::Connect("alien://");
7
8   gSystem->Load("libTree");
9   gSystem->Load("libGeom");
10   gSystem->Load("libVMC");
11   gSystem->Load("libPhysics");
12   
13   // Common packages
14   SetupPar("STEERBase");
15   gSystem->Load("libSTEERBase");
16   SetupPar("ESD");
17   gSystem->Load("libVMC");
18   gSystem->Load("libESD");
19   SetupPar("AOD");
20   gSystem->Load("libAOD");
21   SetupPar("ANALYSIS");
22   gSystem->Load("libANALYSIS");
23   SetupPar("ANALYSISalice");
24   gSystem->Load("libANALYSISalice");
25   // Analysis-specific packages
26   SetupPar("PWG3muon");      
27   gSystem->Load("libPWGmuon");
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
91   AliAnalysisDataContainer *esdIn = mgr->GetCommonInputContainer();
92   // Output AOD container. 
93   AliAnalysisDataContainer *aodOut = mgr->GetCommonOutputContainer();
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 //______________________________________________________________________________
117 void 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