1 void AnalysisTrainMuonComp(){
5 printf("*** Connect to AliEn ***\n");
6 TGrid::Connect("alien://");
8 gSystem->Load("libTree.so");
9 gSystem->Load("libGeom.so");
10 gSystem->Load("libVMC.so");
11 gSystem->Load("libPhysics.so");
14 SetupPar("STEERBase");
15 gSystem->Load("libSTEERBase.so");
17 gSystem->Load("libVMC.so");
18 gSystem->Load("libESD.so");
20 gSystem->Load("libAOD.so");
22 gSystem->Load("libANALYSIS.so");
23 SetupPar("ANALYSISalice");
24 gSystem->Load("libANALYSISalice.so");
25 // Analysis-specific packages
27 gSystem->Load("libPWG3muon.so");
29 gROOT->LoadMacro("AliAnalysisTaskAODvsESD.cxx+");
31 const char *collectionfile = "wn.xml";
34 AliTagAnalysis *analysis = new AliTagAnalysis();
37 chain = analysis->GetChainFromCollection(collectionfile,"esdTree");
38 chain->SetBranchStatus("*Calo*",0);
40 // Define the analysis manager
41 AliAnalysisManager *mgr = new AliAnalysisManager("Analysis Train", "Analysis train");
44 AliESDInputHandler *esdHandler = new AliESDInputHandler();
45 esdHandler->SetInactiveBranches("FMD CaloCluster");
46 mgr->SetInputEventHandler(esdHandler);
49 AliAODHandler* aodHandler = new AliAODHandler();
50 aodHandler->SetOutputFileName("AOD.root");
51 mgr->SetOutputEventHandler(aodHandler);
53 // Set of cuts for the ESD filter
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);
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);
73 AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
74 trackFilter->AddCuts(esdTrackCutsL);
75 trackFilter->AddCuts(esdTrackCutsH);
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);
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);
86 // third task - compare created AOD and exixting ESDs
87 AliAnalysisTaskAODvsESD *AODvsESD = new AliAnalysisTaskAODvsESD("aodVsEsd");
88 mgr->AddTask(AODvsESD);
90 // Input ESD container
91 AliAnalysisDataContainer *esdIn = mgr->GetCommonInputContainer();
92 // Output AOD container.
93 AliAnalysisDataContainer *aodOut = mgr->GetCommonOutputContainer();
95 AliAnalysisDataContainer *listOut = mgr->CreateContainer("output2", TList::Class(), AliAnalysisManager::kOutputContainer, "AODvsESDoutput.root");
97 // Connect containers to tasks slots
98 mgr->ConnectInput(esdFilter,0,esdIn);
99 mgr->ConnectOutput(esdFilter,0,aodOut);
101 mgr->ConnectInput(esdMuonFilter,0,esdIn);
102 mgr->ConnectOutput(esdMuonFilter,0,aodOut);
104 mgr->ConnectInput(AODvsESD,0,esdIn);
105 mgr->ConnectOutput(AODvsESD,0,listOut);
108 if (mgr->InitAnalysis()){
110 mgr->StartAnalysis("local",chain);
116 //______________________________________________________________________________
117 void SetupPar(char* pararchivename)
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);
126 // check for BUILD.sh and execute
127 if (!gSystem->AccessPathName("PROOF-INF/BUILD.sh")) {
128 printf("*** Building PAR archive ***\n");
130 if (gSystem->Exec("PROOF-INF/BUILD.sh")) {
131 Error("runProcess","Cannot Build the PAR Archive! - Abort!");
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");
141 gSystem->ChangeDirectory(ocwd.Data());
142 printf("Current dir: %s\n", ocwd.Data());