]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
new add task for DptDpt corr PbPb: Prabhat
authorsjena <sjena@cern.ch>
Fri, 14 Nov 2014 00:31:54 +0000 (01:31 +0100)
committersjena <sjena@cern.ch>
Fri, 14 Nov 2014 00:31:54 +0000 (01:31 +0100)
PWGCF/Correlations/macros/dptdptcorrelations/AddTaskDptDptCorr_PbPb.C [new file with mode: 0644]

diff --git a/PWGCF/Correlations/macros/dptdptcorrelations/AddTaskDptDptCorr_PbPb.C b/PWGCF/Correlations/macros/dptdptcorrelations/AddTaskDptDptCorr_PbPb.C
new file mode 100644 (file)
index 0000000..38fcff7
--- /dev/null
@@ -0,0 +1,288 @@
+// Macro designed for use with the AliAnalysisTaskDptDptCorrelations task.
+// Author: Prabhat Pujahari & Claude Pruneau, Wayne State
+//           system:  0: PbPb                 1: pPb
+//      singlesOnly:  0: full correlations    1: singles only
+//       useWeights:  0: no                   1: yes
+// centralityMethod:  3: track count  4: V0 centrality  7: V0A centrality for pPb
+//        chargeSet:  0: ++    1: +-    2: -+    3: --
+/////////////////////////////////////////////////////////////////////////////////
+AliAnalysisTaskDptDptCorrelations *AddTaskDptDptCorr_PbPb
+(int    system                  = 0, 
+ int    singlesOnly             = 0,
+ int    useWeights              = 1, 
+ int    centralityMethod        = 4,
+ int    chargeSet               = 1,
+ double zMin                   = -10.,
+ double zMax                   =  10.,
+ int    trackFilterBit          = 128,
+ int    nClusterMin             = 80, 
+ double eta1Min                 = -0.8,
+ double eta1Max                 = 0.8,
+ double eta2Min                 = -0.8,
+ double eta2Max                 = 0.8,
+ double dcaZMin                 = -3.2,
+ double dcaZMax                 =  3.2,
+ double dcaXYMin                = -2.4,
+ double dcaXYMax                =  2.4,
+ int nCentrality                =  1,
+ Bool_t trigger                 = kFALSE,
+ const char* taskname           = "dcaz2",
+ char *inputHistogramFileName   = "alien:///alice/cern.ch/user/p/prabhat/CalibFiles/PbPbCalib_dca1.root")
+  
+{
+  // Set Default Configuration of this analysis
+  // ==========================================
+  int    debugLevel             = 0;
+  int    rejectPileup           = 1;
+  int    rejectPairConversion   = 1;
+  int    sameFilter             = 1;
+  
+  //int    nCentrality;
+  double minCentrality[10];
+  double maxCentrality[10];
+
+  if (system==0) // PbPb
+    {
+    if (centralityMethod == 4)
+      {
+       minCentrality[0] = 0.0;   maxCentrality[0]  = 5.0;
+        minCentrality[1] = 5.0;  maxCentrality[1]  = 10.;
+        minCentrality[2] = 20.;   maxCentrality[2]  = 30.;
+
+      }
+    else
+      {
+       return 0;
+      }
+    }
+  else if (system==1) // PbPb  //splited to take care of memory problem
+    {
+    if (centralityMethod == 4)
+      {
+       minCentrality[0] = 30.0;   maxCentrality[0]  = 40.0;
+       minCentrality[1] = 50.0;   maxCentrality[1]  = 60.0;
+       minCentrality[2] = 70.0;   maxCentrality[2]  = 80.0;
+      }
+    else
+      {
+      return 0;
+      }
+    }
+  else
+    {
+    return 0;
+    }
+
+  //double zMin                   = -10.;
+  //double zMax                   =  10.;
+  double ptMin                  =  0.2;
+  double ptMax                  =  2.0;
+  double dedxMin                =  0.0;
+  double dedxMax                =  20000.0;
+  int    requestedCharge1       =  1; //default
+  int    requestedCharge2       = -1; //default
+  
+  
+  // Get the pointer to the existing analysis manager via the static access method.
+  // ==============================================================================
+  AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
+  
+  if (!analysisManager) 
+    {
+    ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to.");
+    return NULL;
+    }  
+  
+  TString part1Name;
+  TString part2Name;
+  TString eventName;
+  TString prefixName        = "Corr_";
+  TString pileupRejecSuffix = "_PileupRejec";
+  TString pairRejecSuffix   = "_PairRejec";
+  TString calibSuffix       = "_calib";
+  TString singlesOnlySuffix = "_SO";
+  TString suffix;
+  
+  TString inputPath         = ".";
+  TString outputPath        = ".";
+  TString baseName;
+  TString listName;
+  TString taskName;
+  //TString inputHistogramFileName;
+  TString outputHistogramFileName;
+  
+  // Create the task and add subtask.
+  // ===========================================================================
+  int iTask = 0; // task counter
+  AliAnalysisDataContainer *taskInputContainer;
+  AliAnalysisDataContainer *taskOutputContainer;
+  AliAnalysisTaskDptDptCorrelations* task;
+  
+  for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)
+    {
+      switch (chargeSet)
+        {
+          case 0: part1Name = "P_"; part2Name = "P_"; requestedCharge1 =  1; requestedCharge2 =  1; sameFilter = 1; break;
+          case 1: part1Name = "P_"; part2Name = "M_"; requestedCharge1 =  1; requestedCharge2 = -1; sameFilter = 0;   break;
+          case 2: part1Name = "M_"; part2Name = "P_"; requestedCharge1 = -1; requestedCharge2 =  1; sameFilter = 0;   break;
+          case 3: part1Name = "M_"; part2Name = "M_"; requestedCharge1 = -1; requestedCharge2 = -1; sameFilter = 1;   break;
+        }
+
+      part1Name += "eta";
+      part1Name += int(1000*eta1Max);
+      part1Name += "_";
+      part1Name += int(1000*ptMin);
+      part1Name += "pt";
+      part1Name += int(1000*ptMax);
+      part1Name += "_";
+      part1Name += int(1000*dcaZMin);
+      part1Name += "DCA";
+      part1Name += int(1000*dcaZMax);
+      part1Name += "_";
+
+      part2Name += "eta";
+      part2Name += int(1000*eta2Max);
+      part2Name += "_";
+      part2Name += int(1000*ptMin);
+      part2Name += "pt";
+      part2Name += int(1000*ptMax);
+      part2Name += "_";
+      part2Name += int(1000*dcaZMin);
+      part2Name += "DCA";
+      part2Name += int(1000*dcaZMax);
+      part2Name += "_";
+
+      eventName =  "";
+      eventName += int(10.*minCentrality[iCentrality] );
+      eventName += "Vo";
+      eventName += int(10.*maxCentrality[iCentrality] );
+
+      baseName     =   prefixName;
+      baseName     +=  part1Name;
+      baseName     +=  part2Name;
+      baseName     +=  eventName;
+      listName     =   baseName;
+      taskName     =   baseName;
+
+
+      outputHistogramFileName = baseName;
+      if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;
+      outputHistogramFileName += ".root";
+      
+     
+      TFile  * inputFile  = 0;
+      TList  * histoList  = 0;
+      TH3F   * weight_1   = 0;
+      TH3F   * weight_2   = 0;
+      if (useWeights)
+        {
+        TGrid::Connect("alien:");
+        inputFile = TFile::Open(inputHistogramFileName,"OLD");
+        if (!inputFile)
+          {
+           //cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;
+          return;
+          }
+        TString nameHistoBase = "correction_";
+        TString nameHisto;
+        nameHistoBase += eventName;
+        if (requestedCharge1 == 1)
+          {
+          nameHisto = nameHistoBase + "_p";
+          //cout << "Input Histogram named: " << nameHisto << endl;
+          weight_1 = (TH3F *) inputFile->Get(nameHisto);
+          }
+        else
+          {
+          nameHisto = nameHistoBase + "_m";
+          //cout << "Input Histogram named: " << nameHisto << endl;
+          weight_1 = (TH3F *) inputFile->Get(nameHisto);
+          }
+        if (!weight_1) 
+          {
+           //cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
+          return 0;
+          }
+        
+        if (!sameFilter)
+          {
+          weight_2 = 0;
+          if (requestedCharge2 == 1)
+            {
+            nameHisto = nameHistoBase + "_p";
+            //cout << "Input Histogram named: " << nameHisto << endl;
+            weight_2 = (TH3F *) inputFile->Get(nameHisto);
+            }
+          else
+            {
+            nameHisto = nameHistoBase + "_m";
+            //cout << "Input Histogram named: " << nameHisto << endl;
+            weight_2 = (TH3F *) inputFile->Get(nameHisto);
+            }
+          if (!weight_2) 
+            {
+             //cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;
+            return 0;
+            }
+          }  
+        }
+      task = new  AliAnalysisTaskDptDptCorrelations(taskName);
+      //configure my task
+      task->SetDebugLevel(          debugLevel      ); 
+      task->SetSameFilter(          sameFilter      );
+      task->SetSinglesOnly(         singlesOnly     ); 
+      task->SetUseWeights(          useWeights      ); 
+      task->SetRejectPileup(        rejectPileup    ); 
+      task->SetRejectPairConversion(rejectPairConversion); 
+      task->SetVertexZMin(          zMin            ); 
+      task->SetVertexZMax(          zMax            ); 
+      task->SetVertexXYMin(         -1.            ); 
+      task->SetVertexXYMax(          1.            ); 
+      task->SetCentralityMethod(    centralityMethod);
+      task->SetCentrality(          minCentrality[iCentrality], maxCentrality[iCentrality]);
+      task->SetPtMin1(              ptMin           ); 
+      task->SetPtMax1(              ptMax           ); 
+      task->SetEtaMin1(             eta1Min          ); 
+      task->SetEtaMax1(             eta1Max          ); 
+      task->SetPtMin2(              ptMin           ); 
+      task->SetPtMax2(              ptMax           ); 
+      task->SetEtaMin2(             eta2Min          ); 
+      task->SetEtaMax2(             eta2Max          ); 
+      task->SetDcaZMin(             dcaZMin         ); 
+      task->SetDcaZMax(             dcaZMax         ); 
+      task->SetDcaXYMin(            dcaXYMin        ); 
+      task->SetDcaXYMax(            dcaXYMax        ); //checking by prp
+      task->SetDedxMin(             dedxMin         ); 
+      task->SetDedxMax(             dedxMax         ); 
+      task->SetNClusterMin(         nClusterMin     ); 
+      task->SetTrackFilterBit(      trackFilterBit  );
+      task->SetRequestedCharge_1(   requestedCharge1); 
+      task->SetRequestedCharge_2(   requestedCharge2); 
+      task->SetWeigth_1(            weight_1        );
+      task->SetWeigth_2(            weight_2        );
+      
+
+      if(trigger) task->SelectCollisionCandidates(AliVEvent::kINT7);
+      else task->SelectCollisionCandidates(AliVEvent::kMB);
+
+      cout << "Creating task output container" << endl;
+
+      taskOutputContainer = analysisManager->CreateContainer(listName,
+                                                             TList::Class(),
+                                                             AliAnalysisManager::kOutputContainer,
+                                                             Form("%s:%s", AliAnalysisManager::GetCommonFileName(),taskname));
+      cout << "Add task to analysis manager and connect it to input and output containers" << endl;
+
+      analysisManager->AddTask(task);
+      analysisManager->ConnectInput( task,  0, analysisManager->GetCommonInputContainer());
+      analysisManager->ConnectOutput(task,  0, taskOutputContainer );
+      //cout << "Task added ...." << endl;
+      
+      iTask++;
+    
+    }
+  
+  
+  
+  return task;
+}