1 void AliAnalysisTaskSEVertexingHFTest()
\r
4 // Test macro for the AliAnalysisTaskSE for heavy-flavour vertexing
\r
5 // A.Dainese, andrea.dainese@lnl.infn.it
\r
8 Bool_t inputAOD=kFALSE; // otherwise, ESD
\r
9 Bool_t createAOD=kTRUE; // kTRUE: create AOD and use it as input to vertexing
\r
10 // kFALSE: use ESD as input to vertexing
\r
11 Bool_t writeKineToAOD = kFALSE;
\r
12 TString mode="local"; // otherwise, "grid"
\r
13 Bool_t useParFiles=kFALSE;
\r
14 Bool_t doCentrality=kTRUE;
\r
16 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/LoadLibraries.C");
\r
17 LoadLibraries(useParFiles);
\r
18 gSystem->Load("libPWGmuon");
\r
23 TString treeName,fileName;
\r
25 treeName="aodTree";
\r
26 fileName="AliAOD.root";
\r
28 treeName="esdTree";
\r
29 fileName="AliESDs.root";
\r
31 chain = new TChain(treeName.Data());
\r
32 chain->Add(fileName.Data());
\r
34 } else if (mode=="grid") {
\r
35 //Fetch files with AliEn :
\r
36 const char *collectionfile = "Collection.xml";
\r
37 TGrid::Connect("alien://") ;
\r
38 TAlienCollection *coll = TAlienCollection::Open(collectionfile);
\r
39 if(inputAOD) { // input AOD
\r
40 chain = new TChain("aodTree");
\r
41 while(coll->Next()) chain->Add(coll->GetTURL(""));
\r
42 } else { // input ESD
\r
43 //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria
\r
44 AliRunTagCuts *runCuts = new AliRunTagCuts();
\r
45 AliEventTagCuts *eventCuts = new AliEventTagCuts();
\r
46 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
\r
47 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
\r
48 eventCuts->SetMultiplicityRange(0,20000);
\r
49 //Create an AliTagAnalysis Object and chain the tags
\r
50 AliTagAnalysis *tagAna = new AliTagAnalysis();
\r
51 tagAna->SetType("ESD");
\r
52 TGridResult *tagResult = coll->GetGridResult("",0,0);
\r
54 tagAna->ChainGridTags(tagResult);
\r
55 //Create a new esd chain and assign the chain that is returned by querying the tags
\r
56 chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);
\r
59 printf("ERROR: mode has to be \"local\" or \"grid\" \n");
\r
64 // Create the analysis manager
\r
65 AliAnalysisManager *mgr = new AliAnalysisManager("My Manager","My Manager");
\r
66 mgr->SetDebugLevel(10);
\r
69 AliInputEventHandler *inputHandler = 0;
\r
71 inputHandler = new AliAODInputHandler();
\r
73 inputHandler = new AliESDInputHandler();
\r
75 mgr->SetInputEventHandler(inputHandler);
\r
78 AliAODHandler *aodHandler = new AliAODHandler();
\r
79 const char* deltaAODfname="AliAOD.VertexingHF.root";
\r
81 aodHandler->SetOutputFileName("AliAOD.root");
\r
83 aodHandler->SetOutputFileName(deltaAODfname);
\r
84 aodHandler->SetAODExtensionMode();
\r
86 mgr->SetOutputEventHandler(aodHandler);
\r
87 mgr->RegisterExtraFile(deltaAODfname);
\r
89 if(!inputAOD && createAOD) {
\r
91 AliMCEventHandler* mcHandler = new AliMCEventHandler();
\r
92 if(writeKineToAOD) mgr->SetMCtruthEventHandler(mcHandler);
\r
93 AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");
\r
94 if(writeKineToAOD) mgr->AddTask(kinefilter);
\r
97 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
\r
98 AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
\r
101 gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");
\r
102 AliAnalysisTaskESDfilter *filter = AddTaskESDFilter(writeKineToAOD);
\r
106 // Vertexing analysis task
\r
107 gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/AddTaskVertexingHF.C");
\r
108 AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF(deltaAODfname);
\r
112 // Run the analysis
\r
114 printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());
\r
115 if(!mgr->InitAnalysis()) return;
\r
117 mgr->PrintStatus();
\r
121 mgr->StartAnalysis(mode.Data(),chain);
\r