]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/Correlations/macros/dptdptcorrelations/AddTaskDptDptCorrelations2010.C
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / Correlations / macros / dptdptcorrelations / AddTaskDptDptCorrelations2010.C
index 7a33ee4fa76641ab3c52e864dc2e069706a9e9de..a4f1cfbdbeace021761b95385942c2bce2e9f5b6 100644 (file)
-//\r
-// Macro designed for use with the AliAnalysisTaskDptDptCorrelations task.\r
-//\r
-// Author: Prabhat Pujahari & Claude Pruneau, Wayne State\r
-// \r
-//           system:  0: PbPb                 1: pp\r
-//      singlesOnly:  0: full correlations    1: singles only\r
-//       useWeights:  0: no                   1: yes\r
-// centralityMethod:  3: track count  4: V0 centrality\r
-//        chargeSet:  0: ++    1: +-    2: -+    3: --\r
-/////////////////////////////////////////////////////////////////////////////////\r
-AliAnalysisTaskDptDptCorrelations *AddTaskDptDptCorrelations2010(int    system                 = 0,\r
-                                                                 int    singlesOnly            = 0,\r
-                                                                 int    useWeights             = 1,\r
-                                                                 int    centralityMethod       = 4,\r
-                                                                 int    chargeSet              = 1)\r
-\r
-{\r
-  // Set Default Configuration of this analysis\r
-  // ==========================================\r
-  int    debugLevel             = 0;\r
-  int    rejectPileup           = 1;\r
-  int    rejectPairConversion   = 1;\r
-  int    sameFilter             = 1;\r
-\r
-  \r
-  int    nCentrality;\r
-  double minCentrality[10];\r
-  double maxCentrality[10];\r
-\r
-  if (system==0) // PbPb\r
-    {\r
-    if (centralityMethod == 4)\r
-      {\r
-      nCentrality = 10;\r
-      minCentrality[0] = 0.0; maxCentrality[0] = 5.0;\r
-      minCentrality[1] = 5.0; maxCentrality[1] = 10.;\r
-      minCentrality[2] = 10.; maxCentrality[2] = 20.;\r
-      minCentrality[3] = 20.; maxCentrality[3] = 30.;\r
-      minCentrality[4] = 30.; maxCentrality[4] = 40.;\r
-      minCentrality[5] = 40.; maxCentrality[5] = 50.;\r
-      minCentrality[6] = 50.; maxCentrality[6] = 60.;\r
-      minCentrality[7] = 60.; maxCentrality[7] = 70.;\r
-      minCentrality[8] = 70.; maxCentrality[8] = 80.;\r
-      minCentrality[9] = 80.; maxCentrality[9] = 90.;\r
-      \r
-      }\r
-    else\r
-      {\r
-      cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."\r
-      return 0;\r
-      }\r
-    }\r
-  else if (system==1) // pp\r
-    {\r
-    if (centralityMethod == 3)\r
-      {\r
-      nCentrality = 4;\r
-      minCentrality[0] = 2;   maxCentrality[0] = 100.0;\r
-      minCentrality[1] = 2;   maxCentrality[1] = 20.;\r
-      minCentrality[2] = 20.; maxCentrality[2] = 50.;\r
-      minCentrality[3] = 50.; maxCentrality[3] = 100.;\r
-      }\r
-    else\r
-      {\r
-      cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."\r
-      return 0;\r
-      }\r
-    }\r
-  else\r
-    {\r
-    cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". Option NOT CURRENTLY AVAILABLE. ABORT."\r
-    return 0;\r
-    }\r
-\r
-  double zMin                   = -10.;\r
-  double zMax                   =  10.;\r
-  double ptMin                  =  0.2;\r
-  double ptMax                  =  2.0;\r
-  double etaMin                 = -1.0;\r
-  double etaMax                 =  1.0;\r
-  double dcaZMin                = -3.0;\r
-  double dcaZMax                =  3.0;\r
-  double dcaXYMin               = -2.4;\r
-  double dcaXYMax               =  2.4;\r
-  double dedxMin                =  0.0;\r
-  double dedxMax                =  20000.0;\r
-  int    nClusterMin            =   70;\r
-  int    trackFilterBit         =  128;\r
-  \r
-  int    requestedCharge1       =  1; //default\r
-  int    requestedCharge2       = -1; //default\r
-  \r
-  \r
-  // Get the pointer to the existing analysis manager via the static access method.\r
-  // ==============================================================================\r
-  AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();\r
-  \r
-  if (!analysisManager) \r
-    {\r
-    ::Error("AddTaskDptDptCorrelations", "No analysis manager to connect to.");\r
-    return NULL;\r
-    }  \r
-  \r
-  TString part1Name;\r
-  TString part2Name;\r
-  TString eventName;\r
-  TString prefixName        = "Corr_";\r
-  TString pileupRejecSuffix = "_PileupRejec";\r
-  TString pairRejecSuffix   = "_PairRejec";\r
-  TString calibSuffix       = "_calib";\r
-  TString singlesOnlySuffix = "_SO";\r
-  TString suffix;\r
-  \r
-  TString inputPath         = ".";\r
-  TString outputPath        = ".";\r
-  TString baseName;\r
-  TString listName;\r
-  TString taskName;\r
-  TString inputHistogramFileName;\r
-  TString outputHistogramFileName;\r
-  \r
-  // Create the task and add subtask.\r
-  // ===========================================================================\r
-  int iTask = 0; // task counter\r
-  AliAnalysisDataContainer *taskInputContainer;\r
-  AliAnalysisDataContainer *taskOutputContainer;\r
-  AliAnalysisTaskDptDptCorrelations* task;\r
-  \r
-  for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)\r
-    {\r
-      switch (chargeSet)\r
-        {\r
-          case 0: part1Name = "P_"; part2Name = "P_"; requestedCharge1 =  1; requestedCharge2 =  1; sameFilter = 1; break;\r
-          case 1: part1Name = "P_"; part2Name = "M_"; requestedCharge1 =  1; requestedCharge2 = -1; sameFilter = 0;   break;\r
-          case 2: part1Name = "M_"; part2Name = "P_"; requestedCharge1 = -1; requestedCharge2 =  1; sameFilter = 0;   break;\r
-          case 3: part1Name = "M_"; part2Name = "M_"; requestedCharge1 = -1; requestedCharge2 = -1; sameFilter = 1;   break;\r
-        }\r
-      //part1Name += int(1000*etaMin);\r
-      part1Name += "eta";\r
-      part1Name += int(1000*etaMax);\r
-      part1Name += "_";\r
-      part1Name += int(1000*ptMin);\r
-      part1Name += "pt";\r
-      part1Name += int(1000*ptMax);\r
-      part1Name += "_";\r
-      //part2Name += int(1000*etaMin);\r
-      part2Name += "eta";\r
-      part2Name += int(1000*etaMax);\r
-      part2Name += "_";\r
-      part2Name += int(1000*ptMin);\r
-      part2Name += "pt";\r
-      part2Name += int(1000*ptMax);\r
-      part2Name += "_";\r
-      eventName =  "";\r
-      eventName += int(10.*minCentrality[iCentrality] );\r
-      eventName += "Vo";\r
-      eventName += int(10.*maxCentrality[iCentrality] );\r
-      //eventName += "_";\r
-      //eventName += int(10*zMin ); \r
-      //eventName += "Z";\r
-      //eventName += int(10*zMax ); \r
-      //if (rejectPileup)         eventName += pileupRejecSuffix;\r
-      //if (rejectPairConversion) eventName += pairRejecSuffix;\r
-      baseName     =   prefixName;\r
-      baseName     +=  part1Name;\r
-      baseName     +=  part2Name;\r
-      baseName     +=  eventName;\r
-      listName     =   baseName;\r
-      taskName     =   baseName;\r
-\r
-      //inputHistogramFileName =  "/Users/prabhat/Archive/calib/PbPb276Calibration_PP_2010.root";\r
-      inputHistogramFileName =  "alien:///alice/cern.ch/user/p/prabhat/CalibFiles/PbPb276Calibration_2010.root";\r
-\r
-      outputHistogramFileName = baseName;\r
-      if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;\r
-      outputHistogramFileName += ".root";\r
-      \r
-    cout << "============================================================" << endl;\r
-    cout << "                   iTask: " << iTask << endl;\r
-      cout << "               Task Name: " << taskName << endl;\r
-      cout << "               List Name: " << listName << endl;\r
-      cout << "  inputHistogramFileName: " << inputHistogramFileName  << endl;\r
-      cout << " outputHistogramFileName: " << outputHistogramFileName << endl;\r
-      cout << "                  system: " << system << endl;\r
-      cout << "             singlesOnly: " << singlesOnly << endl;\r
-      cout << "           using weights: " << useWeights << endl;\r
-      cout << "        centralityMethod: " << centralityMethod << endl;\r
-      cout << "               chargeSet: " << chargeSet    << endl;\r
-      cout << "              debugLevel: " << debugLevel   << endl;\r
-      cout << "            rejectPileup: " << rejectPileup << endl;\r
-      cout << "    rejectPairConversion: " << rejectPairConversion  << endl;\r
-      cout << "              sameFilter: " << sameFilter  << endl;\r
-      cout << "                    zMin: " << zMin        << endl;\r
-      cout << "                    zMax: " << zMax        << endl;\r
-      cout << "                   ptMin: " << ptMin       << endl;\r
-      cout << "                   ptMax: " << ptMax       << endl;\r
-      cout << "                  etaMin: " << etaMin   << endl;\r
-      cout << "                  etaMax: " << etaMax   << endl;\r
-      cout << "                 dcaZMin: " << dcaZMin  << endl;\r
-      cout << "                 dcaZMax: " << dcaZMax  << endl;\r
-      cout << "                dcaXYMin: " << dcaXYMin << endl;\r
-      cout << "                dcaXYMax: " << dcaXYMax << endl;\r
-      cout << "                 dedxMin: " << dedxMin  << endl;\r
-      cout << "                 dedxMax: " << dedxMax  << endl;\r
-      cout << "             nClusterMin: " << nClusterMin      << endl;\r
-      cout << "          trackFilterBit: " << trackFilterBit   << endl;\r
-      cout << "        requestedCharge1: " << requestedCharge1 << endl;\r
-      cout << "        requestedCharge2: " << requestedCharge2 << endl;\r
-    cout << "============================================================" << endl;\r
-    \r
-    TFile  * inputFile  = 0;\r
-      TList  * histoList  = 0;\r
-      TH3F   * weight_1   = 0;\r
-      TH3F   * weight_2   = 0;\r
-      if (useWeights)\r
-        {\r
-        TGrid::Connect("alien:");\r
-        inputFile = TFile::Open(inputHistogramFileName,"OLD");\r
-        if (!inputFile)\r
-          {\r
-          cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;\r
-          return;\r
-          }\r
-        TString nameHistoBase = "correction_";\r
-        TString nameHisto;\r
-        nameHistoBase += eventName;\r
-        if (requestedCharge1 == 1)\r
-          {\r
-          nameHisto = nameHistoBase + "_p";\r
-          cout << "Input Histogram named: " << nameHisto << endl;\r
-          weight_1 = (TH3F *) inputFile->Get(nameHisto);\r
-          }\r
-        else\r
-          {\r
-          nameHisto = nameHistoBase + "_m";\r
-          cout << "Input Histogram named: " << nameHisto << endl;\r
-          weight_1 = (TH3F *) inputFile->Get(nameHisto);\r
-          }\r
-        if (!weight_1) \r
-          {\r
-          cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;\r
-          return 0;\r
-          }\r
-        \r
-        if (!sameFilter)\r
-          {\r
-          weight_2 = 0;\r
-          if (requestedCharge2 == 1)\r
-            {\r
-            nameHisto = nameHistoBase + "_p";\r
-            cout << "Input Histogram named: " << nameHisto << endl;\r
-            weight_2 = (TH3F *) inputFile->Get(nameHisto);\r
-            }\r
-          else\r
-            {\r
-            nameHisto = nameHistoBase + "_m";\r
-            cout << "Input Histogram named: " << nameHisto << endl;\r
-            weight_2 = (TH3F *) inputFile->Get(nameHisto);\r
-            }\r
-          if (!weight_2) \r
-            {\r
-            cout << "Requested histogram 'correction_p/m' was not found. ABORT." << endl;\r
-            return 0;\r
-            }\r
-          }  \r
-        }\r
-      task = new  AliAnalysisTaskDptDptCorrelations(taskName);\r
-      //configure my task\r
-      task->SetDebugLevel(          debugLevel      ); \r
-      task->SetSameFilter(          sameFilter      );\r
-      task->SetSinglesOnly(         singlesOnly     ); \r
-      task->SetUseWeights(          useWeights      ); \r
-      task->SetRejectPileup(        rejectPileup    ); \r
-      task->SetRejectPairConversion(rejectPairConversion); \r
-      task->SetVertexZMin(          zMin            ); \r
-      task->SetVertexZMax(          zMax            ); \r
-      task->SetVertexXYMin(         -1.            ); \r
-      task->SetVertexXYMax(          1.            ); \r
-      task->SetCentralityMethod(    centralityMethod);\r
-      task->SetCentrality(          minCentrality[iCentrality], maxCentrality[iCentrality]);\r
-      task->SetPtMin1(              ptMin           ); \r
-      task->SetPtMax1(              ptMax           ); \r
-      task->SetEtaMin1(             etaMin          ); \r
-      task->SetEtaMax1(             etaMax          ); \r
-      task->SetPtMin2(              ptMin           ); \r
-      task->SetPtMax2(              ptMax           ); \r
-      task->SetEtaMin2(             etaMin          ); \r
-      task->SetEtaMax2(             etaMax          ); \r
-      task->SetDcaZMin(             dcaZMin         ); \r
-      task->SetDcaZMax(             dcaZMax         ); \r
-      task->SetDcaXYMin(            dcaXYMin        ); \r
-      task->SetDcaXYMax(            dcaXYMax        ); \r
-      task->SetDedxMin(             dedxMin         ); \r
-      task->SetDedxMax(             dedxMax         ); \r
-      task->SetNClusterMin(         nClusterMin     ); \r
-      task->SetTrackFilterBit(      trackFilterBit  );\r
-      task->SetRequestedCharge_1(   requestedCharge1); \r
-      task->SetRequestedCharge_2(   requestedCharge2); \r
-      task->SetWeigth_1(            weight_1        );\r
-      task->SetWeigth_2(            weight_2        );\r
-      \r
-      \r
-      cout << "Creating task output container" << endl;\r
-      taskOutputContainer = analysisManager->CreateContainer(listName, \r
-                                                             TList::Class(),    \r
-                                                             AliAnalysisManager::kOutputContainer, \r
-                                                             Form("%s:Histos", AliAnalysisManager::GetCommonFileName()));\r
-      cout << "Add task to analysis manager and connect it to input and output containers" << endl;\r
-      analysisManager->AddTask(task);\r
-      analysisManager->ConnectInput( task,  0, analysisManager->GetCommonInputContainer());\r
-      analysisManager->ConnectOutput(task,  0, taskOutputContainer );\r
-      cout << "Task added ...." << endl;\r
-      \r
-      iTask++;\r
-    \r
-    }\r
-  \r
-  \r
-  \r
-  return task;\r
-}\r
+//
+// Macro designed for use with the AliAnalysisTaskDptDptCorrelations task.
+//
+// Author: Prabhat Pujahari & Claude Pruneau, Wayne State
+// 
+//           system:  0: PbPb                 1: pp
+//      singlesOnly:  0: full correlations    1: singles only
+//       useWeights:  0: no                   1: yes
+// centralityMethod:  3: track count  4: V0 centrality
+//        chargeSet:  0: ++    1: +-    2: -+    3: --
+/////////////////////////////////////////////////////////////////////////////////
+AliAnalysisTaskDptDptCorrelations *AddTaskDptDptCorrelations2010(int    system                 = 0,
+                                                                 int    singlesOnly            = 0,
+                                                                 int    useWeights             = 1,
+                                                                 int    centralityMethod       = 4,
+                                                                 int    chargeSet              = 1,
+                                                                int    trackFilterBit         = 128,
+                                                                int    nClusterMin            = 80, 
+                                                                double etaMin                 = -0.9,
+                                                                 double etaMax                 = 0.9,
+                                                                int nCentrality               = 10)
+                                                                 
+{
+  // 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)
+      {
+
+       
+       //nCentrality = 10;
+       minCentrality[0] = 0.0; maxCentrality[0] = 5.0;
+       minCentrality[1] = 5.0; maxCentrality[1] = 10.;
+       minCentrality[2] = 10.; maxCentrality[2] = 20.;
+       minCentrality[3] = 20.; maxCentrality[3] = 30.;
+       minCentrality[4] = 30.; maxCentrality[4] = 40.;
+       minCentrality[5] = 40.; maxCentrality[5] = 50.;
+       minCentrality[6] = 50.; maxCentrality[6] = 60.;
+       minCentrality[7] = 60.; maxCentrality[7] = 70.;
+       minCentrality[8] = 70.; maxCentrality[8] = 80.;
+       minCentrality[9] = 80.; maxCentrality[9] = 90.;
+       
+      }
+    else
+      {
+       //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
+      return 0;
+      }
+    }
+  else if (system==1) // pp
+    {
+    if (centralityMethod == 3)
+      {
+      nCentrality = 4;
+      minCentrality[0] = 2;   maxCentrality[0] = 100.0;
+      minCentrality[1] = 2;   maxCentrality[1] = 20.;
+      minCentrality[2] = 20.; maxCentrality[2] = 50.;
+      minCentrality[3] = 50.; maxCentrality[3] = 100.;
+      }
+    else
+      {
+       //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
+      return 0;
+      }
+    }
+  else
+    {
+      //cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". Option NOT CURRENTLY AVAILABLE. ABORT."
+    return 0;
+    }
+
+  double zMin                   = -10.;
+  double zMax                   =  10.;
+  double ptMin                  =  0.2;
+  double ptMax                  =  2.0;
+  //double etaMin                 = -0.9;
+  //double etaMax                 =  0.9;
+  double dcaZMin                = -3.0;
+  double dcaZMax                =  3.0;
+  double dcaXYMin               = -2.4;
+  double dcaXYMax               =  2.4;
+  double dedxMin                =  0.0;
+  double dedxMax                =  20000.0;
+  //int    nClusterMin            =   80;
+  //int    trackFilterBit         =  128;//TPC only
+  //int    trackFilterBit         =  272; //Hybrid
+  
+  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 += int(1000*etaMin);
+      part1Name += "eta";
+      part1Name += int(1000*etaMax);
+      part1Name += "_";
+      part1Name += int(1000*ptMin);
+      part1Name += "pt";
+      part1Name += int(1000*ptMax);
+      part1Name += "_";
+      //part2Name += int(1000*etaMin);
+      part2Name += "eta";
+      part2Name += int(1000*etaMax);
+      part2Name += "_";
+      part2Name += int(1000*ptMin);
+      part2Name += "pt";
+      part2Name += int(1000*ptMax);
+      part2Name += "_";
+      eventName =  "";
+      eventName += int(10.*minCentrality[iCentrality] );
+      eventName += "Vo";
+      eventName += int(10.*maxCentrality[iCentrality] );
+      //eventName += "_";
+      //eventName += int(10*zMin ); 
+      //eventName += "Z";
+      //eventName += int(10*zMax ); 
+      //if (rejectPileup)         eventName += pileupRejecSuffix;
+      //if (rejectPairConversion) eventName += pairRejecSuffix;
+      baseName     =   prefixName;
+      baseName     +=  part1Name;
+      baseName     +=  part2Name;
+      baseName     +=  eventName;
+      listName     =   baseName;
+      taskName     =   baseName;
+
+      
+      inputHistogramFileName =  "alien:///alice/cern.ch/user/p/prabhat/CalibFiles/PbPb276Calibration_2010.root";
+      //inputHistogramFileName =  "/Users/prabhat/MyTestforEta/eta900/128/PbPb276Calibration_2010.root";
+
+      outputHistogramFileName = baseName;
+      if (singlesOnly) outputHistogramFileName += singlesOnlySuffix;
+      outputHistogramFileName += ".root";
+      
+      /*cout << "============================================================" << endl;
+    cout << "                   iTask: " << iTask << endl;
+      cout << "               Task Name: " << taskName << endl;
+      cout << "               List Name: " << listName << endl;
+      cout << "  inputHistogramFileName: " << inputHistogramFileName  << endl;
+      cout << " outputHistogramFileName: " << outputHistogramFileName << endl;
+      cout << "                  system: " << system << endl;
+      cout << "             singlesOnly: " << singlesOnly << endl;
+      cout << "           using weights: " << useWeights << endl;
+      cout << "        centralityMethod: " << centralityMethod << endl;
+      cout << "               chargeSet: " << chargeSet    << endl;
+      cout << "              debugLevel: " << debugLevel   << endl;
+      cout << "            rejectPileup: " << rejectPileup << endl;
+      cout << "    rejectPairConversion: " << rejectPairConversion  << endl;
+      cout << "              sameFilter: " << sameFilter  << endl;
+      cout << "                    zMin: " << zMin        << endl;
+      cout << "                    zMax: " << zMax        << endl;
+      cout << "                   ptMin: " << ptMin       << endl;
+      cout << "                   ptMax: " << ptMax       << endl;
+      cout << "                  etaMin: " << etaMin   << endl;
+      cout << "                  etaMax: " << etaMax   << endl;
+      cout << "                 dcaZMin: " << dcaZMin  << endl;
+      cout << "                 dcaZMax: " << dcaZMax  << endl;
+      cout << "                dcaXYMin: " << dcaXYMin << endl;
+      cout << "                dcaXYMax: " << dcaXYMax << endl;
+      cout << "                 dedxMin: " << dedxMin  << endl;
+      cout << "                 dedxMax: " << dedxMax  << endl;
+      cout << "             nClusterMin: " << nClusterMin      << endl;
+      cout << "          trackFilterBit: " << trackFilterBit   << endl;
+      cout << "        requestedCharge1: " << requestedCharge1 << endl;
+      cout << "        requestedCharge2: " << requestedCharge2 << endl;
+    cout << "============================================================" << endl;
+      */
+    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(             etaMin          ); 
+      task->SetEtaMax1(             etaMax          ); 
+      task->SetPtMin2(              ptMin           ); 
+      task->SetPtMax2(              ptMax           ); 
+      task->SetEtaMin2(             etaMin          ); 
+      task->SetEtaMax2(             etaMax          ); 
+      //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        );
+      
+      
+      //cout << "Creating task output container" << endl;
+      taskOutputContainer = analysisManager->CreateContainer(listName, 
+                                                             TList::Class(),    
+                                                             AliAnalysisManager::kOutputContainer, 
+                                                             Form("%s:Histos", AliAnalysisManager::GetCommonFileName()));
+      //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;
+}