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=kTRUE; // otherwise, ESD
\r
9 Bool_t createAOD=kFALSE; // kTRUE: create AOD and use it as input to vertexing
\r
10 // kFALSE: use ESD as input to vertexing
\r
11 Bool_t writeKineToAOD = kTRUE;
\r
12 TString mode="local"; // otherwise, "grid"
\r
13 Bool_t useParFiles=kFALSE;
\r
15 gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/LoadLibraries.C");
\r
16 LoadLibraries(useParFiles);
\r
22 TString treeName,fileName;
\r
24 treeName="aodTree";
\r
25 fileName="AliAOD.root";
\r
27 treeName="esdTree";
\r
28 fileName="AliESDs.root";
\r
30 chain = new TChain(treeName.Data());
\r
31 chain->Add(fileName.Data());
\r
33 } else if (mode=="grid") {
\r
34 //Fetch files with AliEn :
\r
35 const char *collectionfile = "Collection.xml";
\r
36 TGrid::Connect("alien://") ;
\r
37 TAlienCollection *coll = TAlienCollection::Open(collectionfile);
\r
38 if(inputAOD) { // input AOD
\r
39 chain = new TChain("aodTree");
\r
40 while(coll->Next()) chain->Add(coll->GetTURL(""));
\r
41 } else { // input ESD
\r
42 //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria
\r
43 AliRunTagCuts *runCuts = new AliRunTagCuts();
\r
44 AliEventTagCuts *eventCuts = new AliEventTagCuts();
\r
45 AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
\r
46 AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
\r
47 eventCuts->SetMultiplicityRange(0,20000);
\r
48 //Create an AliTagAnalysis Object and chain the tags
\r
49 AliTagAnalysis *tagAna = new AliTagAnalysis();
\r
50 tagAna->SetType("ESD");
\r
51 TGridResult *tagResult = coll->GetGridResult("",0,0);
\r
53 tagAna->ChainGridTags(tagResult);
\r
54 //Create a new esd chain and assign the chain that is returned by querying the tags
\r
55 chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);
\r
58 printf("ERROR: mode has to be \"local\" or \"grid\" \n");
\r
63 // Create the analysis manager
\r
64 AliAnalysisManager *mgr = new AliAnalysisManager("My Manager","My Manager");
\r
65 mgr->SetDebugLevel(10);
\r
68 AliInputEventHandler *inputHandler = 0;
\r
70 inputHandler = new AliAODInputHandler();
\r
72 inputHandler = new AliESDInputHandler();
\r
74 mgr->SetInputEventHandler(inputHandler);
\r
77 AliAODHandler *aodHandler = new AliAODHandler();
\r
78 const char* deltaAODfname="AliAOD.VertexingHF.root";
\r
80 aodHandler->SetOutputFileName("AliAOD.root");
\r
82 aodHandler->SetFillAOD(kFALSE);
\r
83 aodHandler->SetOutputFileName(deltaAODfname);
\r
84 aodHandler->SetCreateNonStandardAOD();
\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
96 AliAnalysisTaskESDfilter *filter = new AliAnalysisTaskESDfilter("Filter");
\r
97 mgr->AddTask(filter);
\r
99 AliESDtrackCuts* esdTrackCutsHF = new AliESDtrackCuts("AliESDtrackCuts", "Heavy flavour");
\r
100 esdTrackCutsHF->SetClusterRequirementITS(AliESDtrackCuts::kSPD,AliESDtrackCuts::kAny);
\r
102 AliAnalysisFilter* trackFilter = new AliAnalysisFilter("trackFilter");
\r
103 trackFilter->AddCuts(esdTrackCutsHF);
\r
105 filter->SetTrackFilter(trackFilter);
\r
108 mgr->ConnectInput(filter,0,mgr->GetCommonInputContainer());
\r
109 mgr->ConnectOutput(filter,0,mgr->GetCommonOutputContainer());
\r
110 if(writeKineToAOD) {
\r
111 mgr->ConnectInput(kinefilter,0,mgr->GetCommonInputContainer());
\r
112 mgr->ConnectOutput(kinefilter,0,mgr->GetCommonOutputContainer());
\r
117 // Vertexing analysis task
\r
118 gROOT->LoadMacro("$ALICE_ROOT/PWG3/vertexingHF/AddTaskVertexingHF.C");
\r
119 AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF(deltaAODfname);
\r
123 // Run the analysis
\r
125 printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());
\r
126 if(!mgr->InitAnalysis()) return;
\r
128 mgr->PrintStatus();
\r
132 mgr->StartAnalysis(mode.Data(),chain);
\r