]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
add pt calibration check component (S. Schuchmann)
authorjotwinow <jotwinow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 16 Nov 2009 13:56:43 +0000 (13:56 +0000)
committerjotwinow <jotwinow@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 16 Nov 2009 13:56:43 +0000 (13:56 +0000)
PWG1/macros/AddTaskPerformanceTPCPtCalib.C [new file with mode: 0755]

diff --git a/PWG1/macros/AddTaskPerformanceTPCPtCalib.C b/PWG1/macros/AddTaskPerformanceTPCPtCalib.C
new file mode 100755 (executable)
index 0000000..e15ed92
--- /dev/null
@@ -0,0 +1,170 @@
+///////////////////////////////////////////////////////////////////////////////
+// Macro to setup AliPerformanceTask for 
+// TPC performance QA to run on PWG1 QA train. 
+//
+// Input: ESDs, ESDfriends (optional), Kinematics (optional), TrackRefs (optional)
+// ESD and MC input handlers must be attached to AliAnalysisManager
+// to run default configuration. 
+//
+// By default 1 performance component is added to 
+// the task: 
+// 1. AliPerformancePtCalib
+// or AliPerformancePtCalibMC if bUseMCinfo = kTRUE (use MC info)
+
+// Usage on the analysis train (default configuration):
+// gSystem->Load("libANALYSIS");
+// gSystem->Load("libANALYSISalice");
+// gSystem->Load("libTPCcalib.so");
+// gSystem->Load("libPWG1.so");
+//
+// gROOT->LoadMacro("$ALICE_ROOT/PWG1/macros/AddTaskPerformanceTPC.C");
+// AliPerformanceTask *tpcQA = AddTaskPerformanceTPC("kTRUE","kTRUE"); 
+// 
+// Output:
+// TPC.Performance.root file with TPC performance components is created.
+//
+// Each of the components contains THnSparse generic histograms which 
+// have to be analysed (post-analysis) by using Analyse() function. 
+// Each component contains such function.
+//
+//13.10.2009 -  J.Otwinowski@gsi.de
+///////////////////////////////////////////////////////////////////////////////
+
+//____________________________________________
+AliPerformanceTask* AddTaskPerformanceTPCPtCalib(Bool_t bUseMCInfo=kTRUE, Bool_t bUseESDfriend=kTRUE)
+{
+  //
+  // Add AliPerformanceTask with TPC performance components
+  //
+  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+  if(!mgr) { 
+     Error("AddTaskPerformanceTPCPtCalib","AliAnalysisManager not set!");
+    return NULL;
+  }
+  
+  TString type = mgr->GetInputEventHandler()->GetDataType();
+  if (!type.Contains("ESD")) {
+     Error("AddTaskPerformanceTPCPtCalib", "ESD input handler needed!");
+    return NULL;
+  }
+  
+  AliMCEventHandler *mcH = (AliMCEventHandler*)mgr->GetMCtruthEventHandler();
+  if (!mcH && bUseMCInfo) {
+    Error("AddTaskPerformanceTPCPtCalib", "MC input handler needed!");
+    return NULL;
+  }
+
+  //
+  // Create task
+  //
+  AliPerformanceTask *task = new AliPerformanceTask("Performance","TPC Performance PtCalib");
+  if (!task) {
+    Error("AddTaskPerformanceTPCPtCalib", "TPC performance task cannot be created!");
+    return NULL;
+  }
+  task->SetUseMCInfo(bUseMCInfo);
+  task->SetUseESDfriend(bUseESDfriend);
+
+  //
+  // Add task to analysis manager
+  //
+  mgr->AddTask(task);
+
+  //
+  // Create TPC-ESD track reconstruction cuts
+  //
+  AliRecInfoCuts *pRecInfoCuts = new AliRecInfoCuts(); 
+  if(pRecInfoCuts) {
+    pRecInfoCuts->SetMaxDCAToVertexXY(3.0);
+    pRecInfoCuts->SetMaxDCAToVertexZ(3.0);
+    pRecInfoCuts->SetMinNClustersTPC(50);
+    pRecInfoCuts->SetMinNClustersITS(2);
+    pRecInfoCuts->SetHistogramsOn(kFALSE); 
+  } 
+  else {
+    Error("AddTaskPerformanceTPCPtCalib", "AliRecInfoCuts cannot be created!");
+    return NULL;
+  }
+  //
+  // Create TPC-MC track reconstruction cuts
+  //
+  AliMCInfoCuts  *pMCInfoCuts = new AliMCInfoCuts();
+  if(pMCInfoCuts) {
+    pMCInfoCuts->SetMinTrackLength(70);
+  } 
+  else {
+    Error("AddTaskPerformanceTPCPtCalib", "AliMCInfoCuts cannot be created!");
+    return NULL;
+  }
+
+  //
+  // Create performance objects for TPC and set cuts 
+  //
+  enum { kTPC = 0, kTPCITS, kConstrained, kTPCInner, kTPCOuter, kTPCSec };
+
+
+  AliPerformancePtCalib *ptCalib =  NULL;
+  AliPerformancePtCalibMC *ptCalibMC = NULL;
+
+  if(bUseMCInfo){
+     ptCalibMC = new AliPerformancePtCalibMC("AliPerformancePtCalibMC","AliPerformancePtCalibMC");//,kTPC,kTRUE);
+     if(!ptCalibMC) {
+       Error("AddTaskPerformanceTPCPtCalib", "Cannot create AliPerformancePtCalibMC");
+     }
+    
+     ptCalibMC->SetAliRecInfoCuts(pRecInfoCuts);
+     ptCalibMC->SetReadTPCTracks(kTRUE);  
+     ptCalibMC->SetTPCRefit(kFALSE) ;         
+     ptCalibMC->SetITSRefit(kFALSE);          
+     ptCalibMC->SetESDCuts(kTRUE);            
+     ptCalibMC->SetDCACuts(kTRUE);             
+     ptCalibMC->SetAcceptKinkDaughters(kFALSE);   
+     ptCalibMC->SetRequireSigmaToVertex(kFALSE);
+     ptCalibMC->SetfDCAToVertex2D(kFALSE)   ;
+
+     // const Double_t esdCutvalues[6] ={};//set esd track cut values
+     // ptCalibMC->SetESDcutValues(esdCutvalues);
+     // ptCalibMC->SetEtaRange(0.9);
+     // ptCalibMC->SetAliMCInfoCuts(pMCInfoCut);
+     
+  }
+  else{
+
+     ptCalib =  new AliPerformancePtCalib("AliPerformancePtCalib","AliPerformancePtCalib");//,kTPC,kFALSE);
+     if(!ptCalib) {
+       Error("AddTaskPerformanceTPCPtCalib", "Cannot create AliPerformancePtCalib");
+     }
+     ptCalib->SetAliRecInfoCuts(pRecInfoCuts);
+     ptCalib->SetReadTPCTracks(kTRUE);  
+     ptCalib->SetTPCRefit(kFALSE) ;         
+     ptCalib->SetITSRefit(kFALSE);          
+     ptCalib->SetESDCuts(kTRUE);            
+     ptCalib->SetDCACuts(kTRUE);             
+     ptCalib->SetAcceptKinkDaughters(kFALSE);   
+     ptCalib->SetRequireSigmaToVertex(kFALSE);
+     ptCalib->SetfDCAToVertex2D(kFALSE)   ;
+     
+     // const Double_t esdCutvalues[6] ={};
+     // ptCalib->SetESDcutValues(esdCutvalues);
+     // ptCalib->SetEtaRange(0.9);
+     // ptCalib->SetAliMCInfoCuts(pMCInfoCut);
+  }
+     
+  // add components to the performance task
+  
+  if(bUseMCInfo) task->AddPerformanceObject( ptCalibMC);
+  else task->AddPerformanceObject( ptCalib );
+  
+  // Create containers for input
+  //
+  mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
+  
+  //
+  // Create containers for output
+  //
+  AliAnalysisDataContainer *coutput_tpcptcalib = mgr->CreateContainer("TPCPtCalib", TList::Class(), AliAnalysisManager::kOutputContainer, Form("TPCPtCalib.%s.root", task->GetName()));
+  mgr->ConnectOutput(task, 0, coutput_tpcptcalib);
+
+return task;  
+}