]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CORRFW/test/AliCFSingleTrackTask.C
Compliance with AliAnalysisTaskSE ; upgraded support for QA.
[u/mrichter/AliRoot.git] / CORRFW / test / AliCFSingleTrackTask.C
index 0805f56f81c60524aa888ef38a596de78e5bdc97..41e25ff2c4f78c6e4eac75fa73e16299a6cf9550 100644 (file)
@@ -86,43 +86,45 @@ Bool_t AliCFSingleTrackTask(
   container -> SetBinLimits(iy,binLim2);
 
 
+  // SET TLIST FOR QA HISTOS
+  TList* qaList = new TList();
+
   //CREATE THE  CUTS -----------------------------------------------
-  //Particle-Level cuts:  
 
   // Gen-Level kinematic cuts
   AliCFTrackKineCuts *mcKineCuts = new AliCFTrackKineCuts("mcKineCuts","MC-level kinematic cuts");
   mcKineCuts->SetPtRange(ptmin,ptmax);
   mcKineCuts->SetRapidityRange(ymin,ymax);
   mcKineCuts->SetChargeMC(charge);
-  mcKineCuts->SetQAOn(kTRUE);
+  mcKineCuts->SetQAOn(qaList);
 
+  //Particle-Level cuts:  
   AliCFParticleGenCuts* mcGenCuts = new AliCFParticleGenCuts("mcGenCuts","MC particle generation cuts");
   mcGenCuts->SetRequireIsPrimary();
   mcGenCuts->SetRequirePdgCode(PDG);
+  mcGenCuts->SetQAOn(qaList);
 
   //Acceptance Cuts
   AliCFAcceptanceCuts *mcAccCuts = new AliCFAcceptanceCuts("mcAccCuts","MC acceptance cuts");
   mcAccCuts->SetMinNHitITS(mintrackrefsITS);
   mcAccCuts->SetMinNHitTPC(mintrackrefsTPC);
+  mcAccCuts->SetQAOn(qaList);
 
   // Rec-Level kinematic cuts
   AliCFTrackKineCuts *recKineCuts = new AliCFTrackKineCuts("recKineCuts","rec-level kine cuts");
   recKineCuts->SetPtRange(ptmin,ptmax);
   recKineCuts->SetRapidityRange(ymin,ymax);
   recKineCuts->SetChargeRec(charge);
-  // QA histograms for rec-level kinematic cuts
-  recKineCuts->SetQAOn(kTRUE);
+  recKineCuts->SetQAOn(qaList);
 
   AliCFTrackQualityCuts *recQualityCuts = new AliCFTrackQualityCuts("recQualityCuts","rec-level quality cuts");
   recQualityCuts->SetMinNClusterTPC(minclustersTPC);
   recQualityCuts->SetRequireITSRefit(kTRUE);
-  // QA histograms for rec-level quality cuts
-  recQualityCuts->SetQAOn(kTRUE);
+  recQualityCuts->SetQAOn(qaList);
 
   AliCFTrackIsPrimaryCuts *recIsPrimaryCuts = new AliCFTrackIsPrimaryCuts("recIsPrimaryCuts","rec-level isPrimary cuts");
   recIsPrimaryCuts->SetMaxNSigmaToVertex(3);
-  // QA histograms for rec-level primary-check cuts
-  recIsPrimaryCuts->SetQAOn(kTRUE);
+  recIsPrimaryCuts->SetQAOn(qaList);
 
   AliCFTrackCutPid* cutPID = new AliCFTrackCutPid("cutPID","ESD_PID") ;
   int n_species = AliPID::kSPECIES ;
@@ -145,7 +147,7 @@ Bool_t AliCFSingleTrackTask(
   case 2212 : cutPID->SetParticleType(AliPID::kProton  , kTRUE); break;
   default   : printf("UNDEFINED PID\n"); break;
   }
-  cutPID->SetQAOn(kTRUE);
+  cutPID->SetQAOn(qaList);
 
   printf("CREATE MC KINE CUTS\n");
   TObjArray* mcList = new TObjArray(0) ;
@@ -166,7 +168,6 @@ Bool_t AliCFSingleTrackTask(
   TObjArray* fPIDCutList = new TObjArray(0) ;
   fPIDCutList->AddLast(cutPID);
 
-
   //CREATE THE INTERFACE TO CORRECTION FRAMEWORK USED IN THE TASK
   printf("CREATE INTERFACE AND CUTS\n");
   AliCFManager* man = new AliCFManager() ;
@@ -182,35 +183,49 @@ Bool_t AliCFSingleTrackTask(
   // create the task
   AliCFSingleTrackTask *task = new AliCFSingleTrackTask("AliSingleTrackTask");
   task->SetCFManager(man); //here is set the CF manager
-
+  task->SetQAList(qaList);
 
   //SETUP THE ANALYSIS MANAGER TO READ INPUT CHAIN AND WRITE DESIRED OUTPUTS
   printf("CREATE ANALYSIS MANAGER\n");
   // Make the analysis manager
   AliAnalysisManager *mgr = new AliAnalysisManager("TestManager");
 
+  if (useGrid) mgr->SetAnalysisType(AliAnalysisManager::kGridAnalysis);
+  else mgr->SetAnalysisType(AliAnalysisManager::kLocalAnalysis);
+
+  AliMCEventHandler*  mcHandler = new AliMCEventHandler();
+  AliESDInputHandler* esdHandler = new AliESDInputHandler();
+  mgr->SetMCtruthEventHandler(mcHandler);
+  mgr->SetInputEventHandler(esdHandler);
+
   // Create and connect containers for input/output
 
-  //input data
+  //------ input data ------
   AliAnalysisDataContainer *cinput0  = mgr->CreateContainer("cchain0",TChain::Class(),AliAnalysisManager::kInputContainer);
-  // output histo (number of events processed)
-  AliAnalysisDataContainer *coutput0 = mgr->CreateContainer("chist0", TH1I::Class(),AliAnalysisManager::kOutputContainer,"output.root");
+
+  // ----- output data -----
+  
+  //slot 0 : default output tree (by default handled by AliAnalysisTaskSE)
+  AliAnalysisDataContainer *coutput0 = mgr->CreateContainer("ctree0", TTree::Class(),AliAnalysisManager::kOutputContainer,"output.root");
+
+  //now comes user's output objects :
+  
+  // output TH1I for event counting
+  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("chist0", TH1I::Class(),AliAnalysisManager::kOutputContainer,"output.root");
   // output Correction Framework Container (for acceptance & efficiency calculations)
-  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer("ccontainer0", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,"output.root");
+  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("ccontainer0", AliCFContainer::Class(),AliAnalysisManager::kOutputContainer,"output.root");
   // output QA histograms 
-  AliAnalysisDataContainer *coutput2 = mgr->CreateContainer("clist0", TList::Class(),AliAnalysisManager::kOutputContainer,"output.root");
+  AliAnalysisDataContainer *coutput3 = mgr->CreateContainer("clist0", TList::Class(),AliAnalysisManager::kOutputContainer,"output.root");
+
+  cinput0->SetData(analysisChain);
 
   mgr->AddTask(task);
   mgr->ConnectInput(task,0,cinput0);
   mgr->ConnectOutput(task,0,coutput0);
   mgr->ConnectOutput(task,1,coutput1);
   mgr->ConnectOutput(task,2,coutput2);
-  cinput0->SetData(analysisChain);
+  mgr->ConnectOutput(task,3,coutput3);
  
-  //NEW INTERFACE TO MC INFORMATION
-  AliMCEventHandler* mcHandler = new AliMCEventHandler();
-  mgr->SetMCtruthEventHandler(mcHandler);
-
   printf("READY TO RUN\n");
   //RUN !!!
   if (mgr->InitAnalysis()) {