-void AliAnalysisTaskSEVertexingHFTest()\r
-{\r
- //\r
- // Test macro for the AliAnalysisTaskSE for heavy-flavour vertexing\r
- // A.Dainese, andrea.dainese@lnl.infn.it\r
- //\r
-\r
- Bool_t inputAOD=kFALSE; // otherwise, ESD\r
- Bool_t createAOD=kTRUE; // kTRUE: create AOD and use it as input to vertexing\r
- // kFALSE: use ESD as input to vertexing\r
- Bool_t writeKineToAOD = kFALSE;\r
- TString mode="local"; // otherwise, "grid" \r
- Bool_t useParFiles=kFALSE;\r
- Bool_t doCentrality=kTRUE;\r
-\r
- gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/LoadLibraries.C");\r
- LoadLibraries(useParFiles);\r
- gSystem->Load("libPWGmuon");\r
- TChain *chain = 0;\r
-\r
- if(mode=="local") {\r
- // Local files \r
- TString treeName,fileName;\r
- if(inputAOD) {\r
- treeName="aodTree"; \r
- fileName="AliAOD.root";\r
- } else {\r
- treeName="esdTree"; \r
- fileName="AliESDs.root";\r
- }\r
- chain = new TChain(treeName.Data());\r
- chain->Add(fileName.Data());\r
-\r
- } else if (mode=="grid") {\r
- //Fetch files with AliEn :\r
- const char *collectionfile = "Collection.xml";\r
- TGrid::Connect("alien://") ;\r
- TAlienCollection *coll = TAlienCollection::Open(collectionfile);\r
- if(inputAOD) { // input AOD\r
- chain = new TChain("aodTree");\r
- while(coll->Next()) chain->Add(coll->GetTURL(""));\r
- } else { // input ESD\r
- //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria\r
- AliRunTagCuts *runCuts = new AliRunTagCuts();\r
- AliEventTagCuts *eventCuts = new AliEventTagCuts();\r
- AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();\r
- AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();\r
- eventCuts->SetMultiplicityRange(0,20000);\r
- //Create an AliTagAnalysis Object and chain the tags\r
- AliTagAnalysis *tagAna = new AliTagAnalysis();\r
- tagAna->SetType("ESD");\r
- TGridResult *tagResult = coll->GetGridResult("",0,0);\r
- tagResult->Print();\r
- tagAna->ChainGridTags(tagResult);\r
- //Create a new esd chain and assign the chain that is returned by querying the tags\r
- chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);\r
- }\r
- } else {\r
- printf("ERROR: mode has to be \"local\" or \"grid\" \n");\r
- return;\r
- }\r
-\r
-\r
- // Create the analysis manager\r
- AliAnalysisManager *mgr = new AliAnalysisManager("My Manager","My Manager");\r
- mgr->SetDebugLevel(10);\r
- \r
- // Input Handler\r
- AliInputEventHandler *inputHandler = 0;\r
- if(inputAOD) {\r
- inputHandler = new AliAODInputHandler();\r
- } else {\r
- inputHandler = new AliESDInputHandler();\r
- }\r
- mgr->SetInputEventHandler(inputHandler);\r
- \r
- // Output \r
- AliAODHandler *aodHandler = new AliAODHandler();\r
- const char* deltaAODfname="AliAOD.VertexingHF.root";\r
- if(createAOD) {\r
- aodHandler->SetOutputFileName("AliAOD.root");\r
- } else {\r
- aodHandler->SetOutputFileName(deltaAODfname);\r
- aodHandler->SetAODExtensionMode();\r
- }\r
- mgr->SetOutputEventHandler(aodHandler);\r
- mgr->RegisterExtraFile(deltaAODfname); \r
-\r
- if(!inputAOD && createAOD) {\r
- // MC Truth\r
- AliMCEventHandler* mcHandler = new AliMCEventHandler();\r
- if(writeKineToAOD) mgr->SetMCtruthEventHandler(mcHandler);\r
- AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");\r
- if(writeKineToAOD) mgr->AddTask(kinefilter); \r
- // Centrality\r
- if(doCentrality){\r
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");\r
- AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();\r
- }\r
-\r
- gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");\r
- AliAnalysisTaskESDfilter *filter = AddTaskESDFilter(writeKineToAOD);\r
- \r
- }\r
-\r
- // Vertexing analysis task \r
- gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/AddTaskVertexingHF.C");\r
- AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF(deltaAODfname);\r
- \r
- \r
- //\r
- // Run the analysis\r
- // \r
- printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());\r
- if(!mgr->InitAnalysis()) return;\r
-\r
- mgr->PrintStatus();\r
-\r
- TStopwatch watch;\r
- watch.Start();\r
- mgr->StartAnalysis(mode.Data(),chain);\r
- watch.Stop();\r
- watch.Print();\r
-\r
- return;\r
-}\r
+void AliAnalysisTaskSEVertexingHFTest()
+{
+ //
+ // Test macro for the AliAnalysisTaskSE for heavy-flavour vertexing
+ // A.Dainese, andrea.dainese@lnl.infn.it
+ //
+
+ Bool_t inputAOD=kFALSE; // otherwise, ESD
+ Bool_t createAOD=kTRUE; // kTRUE: create AOD and use it as input to vertexing
+ // kFALSE: use ESD as input to vertexing
+ Bool_t writeKineToAOD = kFALSE;
+ TString mode="local"; // otherwise, "grid"
+ Bool_t useParFiles=kFALSE;
+ Bool_t doCentrality=kTRUE;
+
+ gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/LoadLibraries.C");
+ LoadLibraries(useParFiles);
+ gSystem->Load("libPWGmuon");
+ TChain *chain = 0;
+
+ if(mode=="local") {
+ // Local files
+ TString treeName,fileName;
+ if(inputAOD) {
+ treeName="aodTree";
+ fileName="AliAOD.root";
+ } else {
+ treeName="esdTree";
+ fileName="AliESDs.root";
+ }
+ chain = new TChain(treeName.Data());
+ chain->Add(fileName.Data());
+
+ } else if (mode=="grid") {
+ //Fetch files with AliEn :
+ const char *collectionfile = "Collection.xml";
+ TGrid::Connect("alien://") ;
+ TAlienCollection *coll = TAlienCollection::Open(collectionfile);
+ if(inputAOD) { // input AOD
+ chain = new TChain("aodTree");
+ while(coll->Next()) chain->Add(coll->GetTURL(""));
+ } else { // input ESD
+ //Create an AliRunTagCuts and an AliEventTagCuts Object and impose some selection criteria
+ AliRunTagCuts *runCuts = new AliRunTagCuts();
+ AliEventTagCuts *eventCuts = new AliEventTagCuts();
+ AliLHCTagCuts *lhcCuts = new AliLHCTagCuts();
+ AliDetectorTagCuts *detCuts = new AliDetectorTagCuts();
+ eventCuts->SetMultiplicityRange(0,20000);
+ //Create an AliTagAnalysis Object and chain the tags
+ AliTagAnalysis *tagAna = new AliTagAnalysis();
+ tagAna->SetType("ESD");
+ TGridResult *tagResult = coll->GetGridResult("",0,0);
+ tagResult->Print();
+ tagAna->ChainGridTags(tagResult);
+ //Create a new esd chain and assign the chain that is returned by querying the tags
+ chain = tagAna->QueryTags(runCuts,lhcCuts,detCuts,eventCuts);
+ }
+ } else {
+ printf("ERROR: mode has to be \"local\" or \"grid\" \n");
+ return;
+ }
+
+
+ // Create the analysis manager
+ AliAnalysisManager *mgr = new AliAnalysisManager("My Manager","My Manager");
+ mgr->SetDebugLevel(10);
+
+ // Input Handler
+ AliInputEventHandler *inputHandler = 0;
+ if(inputAOD) {
+ inputHandler = new AliAODInputHandler();
+ } else {
+ inputHandler = new AliESDInputHandler();
+ }
+ mgr->SetInputEventHandler(inputHandler);
+
+ // Output
+ AliAODHandler *aodHandler = new AliAODHandler();
+ const char* deltaAODfname="AliAOD.VertexingHF.root";
+ if(createAOD) {
+ aodHandler->SetOutputFileName("AliAOD.root");
+ } else {
+ aodHandler->SetOutputFileName(deltaAODfname);
+ aodHandler->SetAODExtensionMode();
+ }
+ mgr->SetOutputEventHandler(aodHandler);
+ mgr->RegisterExtraFile(deltaAODfname);
+
+ if(!inputAOD && createAOD) {
+ // MC Truth
+ AliMCEventHandler* mcHandler = new AliMCEventHandler();
+ if(writeKineToAOD) mgr->SetMCtruthEventHandler(mcHandler);
+ AliAnalysisTaskMCParticleFilter *kinefilter = new AliAnalysisTaskMCParticleFilter("Particle Filter");
+ if(writeKineToAOD) mgr->AddTask(kinefilter);
+ // Centrality
+ if(doCentrality){
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskCentrality.C");
+ AliCentralitySelectionTask *taskCentrality = AddTaskCentrality();
+ }
+
+ gROOT->LoadMacro("$ALICE_ROOT/ANALYSIS/macros/AddTaskESDFilter.C");
+ AliAnalysisTaskESDfilter *filter = AddTaskESDFilter(writeKineToAOD);
+
+ }
+
+ // Vertexing analysis task
+ gROOT->LoadMacro("$ALICE_ROOT/PWGHF/vertexingHF/macros/AddTaskVertexingHF.C");
+ AliAnalysisTaskSEVertexingHF *hfTask = AddTaskVertexingHF(deltaAODfname);
+
+
+ //
+ // Run the analysis
+ //
+ printf("CHAIN HAS %d ENTRIES\n",(Int_t)chain->GetEntries());
+ if(!mgr->InitAnalysis()) return;
+
+ mgr->PrintStatus();
+
+ TStopwatch watch;
+ watch.Start();
+ mgr->StartAnalysis(mode.Data(),chain);
+ watch.Stop();
+ watch.Print();
+
+ return;
+}