]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG3/vertexingHF/AliAnalysisTaskSEVertexingHFTest.C
New EMC ideal calibration with all gains=0.005
[u/mrichter/AliRoot.git] / PWG3 / vertexingHF / AliAnalysisTaskSEVertexingHFTest.C
1 void AliAnalysisTaskSEVertexingHFTest()\r
2 {\r
3   //\r
4   // Test macro for the AliAnalysisTaskSE for heavy-flavour vertexing\r
5   // A.Dainese, andrea.dainese@lnl.infn.it\r
6   //\r
7 \r
8   Bool_t inputAOD=kTRUE; // otherwise, ESD\r
9   TString mode="local"; // otherwise, "grid" \r
10 \r
11   gSystem->Load("libTree.so");\r
12   gSystem->Load("libGeom.so");\r
13   gSystem->Load("libPhysics.so");\r
14   gSystem->Load("libVMC.so");\r
15   gSystem->Load("libSTEERBase.so");\r
16   gSystem->Load("libESD.so");\r
17   gSystem->Load("libAOD.so"); \r
18   gSystem->Load("libANALYSIS.so");\r
19   gSystem->Load("libANALYSISalice.so");\r
20   gSystem->Load("libCORRFW.so");\r
21   gSystem->Load("libPWG3base.so");\r
22   gSystem->Load("libPWG3vertexingHF.so");\r
23 \r
24   TChain *chain = 0;\r
25 \r
26   if(mode=="local") {\r
27     // Local files \r
28     TString treeName,fileName;\r
29     if(inputAOD) {\r
30       treeName="aodTree"; \r
31       fileName="AliAOD.root";\r
32     } else {\r
33       treeName="esdTree"; \r
34       fileName="AliESDs.root";\r
35     }\r
36     chain = new TChain(treeName.Data());\r
37     chain->Add(fileName.Data());\r
38 \r
39   } else if (mode=="grid") {\r
40     //Fetch files with AliEn :\r
41     const char *collectionfile = "Collection.xml";\r
42     TGrid::Connect("alien://") ;\r
43     TAlienCollection *coll   = TAlienCollection::Open(collectionfile);\r
44     if(inputAOD) { // input AOD\r
45       chain = new TChain("aodTree");\r
46       while(coll->Next()) chain->Add(coll->GetTURL(""));\r
47     } else { // input ESD\r
48       //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria\r
49       AliRunTagCuts      *runCuts   = new AliRunTagCuts();\r
50       AliEventTagCuts    *eventCuts = new AliEventTagCuts();\r
51       AliLHCTagCuts      *lhcCuts   = new AliLHCTagCuts();\r
52       AliDetectorTagCuts *detCuts   = new AliDetectorTagCuts();\r
53       eventCuts->SetMultiplicityRange(0,20000);\r
54       //Create an AliTagAnalysis Object and chain the tags\r
55       AliTagAnalysis   *tagAna = new AliTagAnalysis();\r
56       tagAna->SetType("ESD");\r
57       TGridResult      *tagResult = coll->GetGridResult("",0,0);\r
58       tagResult->Print();\r
59       tagAna->ChainGridTags(tagResult);\r
60       //Create a new esd chain and assign the chain that is returned by querying the tags\r
61       chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);\r
62     }\r
63   } else {\r
64     printf("ERROR: mode has to be \"local\" or \"grid\" \n");\r
65     return;\r
66   }\r
67 \r
68 \r
69   // Create the analysis manager\r
70   AliAnalysisManager *mgr  = new AliAnalysisManager("My Manager","My Manager");\r
71   mgr->SetDebugLevel(10);\r
72   \r
73   // Input Handler\r
74   AliInputEventHandler *inputHandler = 0;\r
75   if(inputAOD) {\r
76     inputHandler = new AliAODInputHandler();\r
77   } else {\r
78     inputHandler = new AliESDInputHandler();\r
79   }\r
80   mgr->SetInputEventHandler(inputHandler);\r
81   \r
82   // Output \r
83   AliAODHandler *aodHandler = new AliAODHandler();\r
84   aodHandler->SetOutputFileName("AliAOD.VertexingHF.root");\r
85   aodHandler->SetCreateNonStandardAOD();\r
86   mgr->SetOutputEventHandler(aodHandler);\r
87   \r
88   // Vertexing analysis task    \r
89   AliAnalysisTaskSEVertexingHF *hfTask = new AliAnalysisTaskSEVertexingHF("VertexingHFAnalysis");\r
90   hfTask->SetDebugLevel(2);\r
91   \r
92   mgr->AddTask(hfTask);\r
93   \r
94   //\r
95   // Create containers for input/output\r
96   AliAnalysisDataContainer *cinput1 = mgr->CreateContainer("cchain",TChain::Class(), \r
97                                                            AliAnalysisManager::kInputContainer);\r
98   AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("tree", TTree::Class(),\r
99                                                             AliAnalysisManager::kOutputContainer, \r
100                                                             "default");\r
101   mgr->ConnectInput(hfTask,0,cinput1);\r
102   mgr->ConnectOutput(hfTask,0,coutput1);\r
103 \r
104   //\r
105   // Run the analysis\r
106   //    \r
107   printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());\r
108   if(!mgr->InitAnalysis()) return;\r
109 \r
110   mgr->PrintStatus();\r
111 \r
112   mgr->StartAnalysis(mode.Data(),chain);\r
113 \r
114   return;\r
115 }\r