]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
for AliAnalysisTask3PCorrelations
authoraadare <aadare@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 19 Jun 2012 14:27:39 +0000 (14:27 +0000)
committeraadare <aadare@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 19 Jun 2012 14:27:39 +0000 (14:27 +0000)
PWGCF/Correlations/macros/AddTask3PCorrelations.C [new file with mode: 0644]

diff --git a/PWGCF/Correlations/macros/AddTask3PCorrelations.C b/PWGCF/Correlations/macros/AddTask3PCorrelations.C
new file mode 100644 (file)
index 0000000..670bd04
--- /dev/null
@@ -0,0 +1,321 @@
+//
+// Macro designed for use with the AliAnalysisTaskDptDptCorrelations task.
+//
+// Author: 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
+//////////////////////////////////////////////////////////////////////////////
+AliAnalysisTask3PCorrelations * AddTask3PCorrelations(int    etaOption              = 0,
+                                                      int    system                 = 0,
+                                                      int    singlesOnly            = 0,
+                                                      int    useWeights             = 0,
+                                                      int    centralityMethod       = 4)
+
+{
+  // Set Default Configuration of this analysis
+  // ==========================================
+  int    debugLevel             = 0;
+  int    rejectPileup           = 1;
+  int    rejectPairConversion   = 1;
+  int    nCentrality;
+  double minCentrality[10];
+  double maxCentrality[10];
+
+  if (system==0) // PbPb
+    {
+    if (centralityMethod == 4)
+      {
+      nCentrality = 10;
+      minCentrality[0] = 0.5; 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- AddTask3PCorrelations() 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- AddTask3PCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
+      return 0;
+      }
+    }
+  else
+    {
+    cout << "-F- AddTask3PCorrelations() system:" << system << ". Option NOT CURRENTLY AVAILABLE. ABORT."
+    return 0;
+    }
+
+  double zMin                   = -10.;
+  double zMax                   =  10.;
+  double dcaZMin                = -3.0;
+  double dcaZMax                =  3.0;
+  double dcaXYMin               = -3.0;
+  double dcaXYMax               =  3.0;
+  double dedxMin                =  0.0;
+  double dedxMax                =  20000.0;
+  int    nClusterMin            =   70;
+  int    trackFilterBit         =  128;
+  double ptMin1                 =   2.0;
+  double ptMax1                 =  10.0;
+  double etaMin1                = -0.25;
+  double etaMax1                =  0.25;
+  double ptMin2                 =  1.0;
+  double ptMax2                 =  2.0;
+  double etaMin2                = -1.0;
+  double etaMax2                = -0.7;
+  double ptMin3                 =  1.0;
+  double ptMax3                 =  2.0;
+  double etaMin3                =  0.7;
+  double etaMax3                =  1.0;
+  
+  if (etaOption == 0)
+    {
+    etaMin2 = -1.0;
+    etaMax2 = -0.7;
+    etaMin3 =  0.7;
+    etaMax3 =  1.0;
+    }
+  else
+    {
+    etaMin2 = etaMin1;
+    etaMax2 = etaMax1;
+    etaMin3 = etaMin1;
+    etaMax3 = etaMax1;
+    
+    }
+  
+  // Get the pointer to the existing analysis manager via the static access method.
+  // ==============================================================================
+  AliAnalysisManager *analysisManager = AliAnalysisManager::GetAnalysisManager();
+  
+  if (!analysisManager) 
+    {
+    ::Error("AddTask3PCorrelations", "No analysis manager to connect to.");
+    return NULL;
+    }  
+  
+  TString part1Name;
+  TString part2Name;
+  TString part3Name;
+  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;
+  AliAnalysisTask3PCorrelations * task;
+  
+  for (int iCentrality=0; iCentrality < nCentrality; ++iCentrality)
+    {
+    part1Name = "";
+    part1Name += int(1000*ptMin1);
+      part1Name += "pt";
+      part1Name += int(1000*ptMax1);
+      part1Name += "_";
+
+    part2Name = "";
+      part2Name += int(1000*ptMin2);
+      part2Name += "pt";
+      part2Name += int(1000*ptMax2);
+      part2Name += "_";
+
+    part3Name = "";
+    part3Name += int(1000*ptMin3);
+    part3Name += "pt";
+    part3Name += int(1000*ptMax3);
+    part3Name += "_";
+
+    eventName =  "";
+      eventName += int(10.*minCentrality[iCentrality] );
+      eventName += "Vo";
+      eventName += int(10.*maxCentrality[iCentrality] );
+      //if (rejectPileup)         eventName += pileupRejecSuffix;
+      //if (rejectPairConversion) eventName += pairRejecSuffix;
+      baseName     =   prefixName;
+      baseName     +=  part1Name;
+    baseName     +=  part2Name;
+    baseName     +=  part3Name;
+      baseName     +=  eventName;
+      listName     =   baseName;
+      taskName     =   baseName;
+    inputHistogramFileName =  "alien:///alice/cern.ch/user/c/cpruneau/PbPb273Calibration.root"; //TFile::Open();
+    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 << "              debugLevel: " << debugLevel   << endl;
+      cout << "            rejectPileup: " << rejectPileup << endl;
+      cout << "    rejectPairConversion: " << rejectPairConversion  << endl;
+      cout << "                    zMin: " << zMin        << endl;
+      cout << "                    zMax: " << zMax        << endl;
+    
+    cout << "                   ptMin1: " << ptMin1       << endl;
+    cout << "                   ptMax1: " << ptMax1       << endl;
+    cout << "                  etaMin1: " << etaMin1   << endl;
+    cout << "                  etaMax1: " << etaMax1   << endl;
+      
+    cout << "                   ptMin2: " << ptMin2       << endl;
+    cout << "                   ptMax2: " << ptMax2       << endl;
+    cout << "                  etaMin2: " << etaMin2   << endl;
+    cout << "                  etaMax2: " << etaMax2   << endl;
+
+    cout << "                   ptMin3: " << ptMin3       << endl;
+    cout << "                   ptMax3: " << ptMax3       << endl;
+    cout << "                  etaMin3: " << etaMin3   << endl;
+    cout << "                  etaMax3: " << etaMax3   << 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 << "============================================================" << endl;
+    
+    TFile  * inputFile  = 0;
+      TList  * histoList  = 0;
+    TH3F   * weight_1P   = 0;
+    TH3F   * weight_1M   = 0;
+    TH3F   * weight_2P   = 0;
+    TH3F   * weight_2M   = 0;
+    TH3F   * weight_3P   = 0;
+    TH3F   * weight_3M   = 0;
+    TString nameHistoBase = "correction_";
+    TString nameHisto;
+      if (useWeights)
+        {
+        TGrid::Connect("alien:");
+        inputFile = TFile::Open(inputHistogramFileName,"OLD");
+        if (!inputFile)
+          {
+          cout << "Requested file:" << inputHistogramFileName << " was not opened. ABORT." << endl;
+          return;
+          }
+        nameHistoBase += eventName;
+        nameHisto = nameHistoBase + "_1p"; cout << "Input Histogram named: " << nameHisto << endl;
+        weight_1P = (TH3F *) inputFile->Get(nameHisto);
+        nameHisto = nameHistoBase + "_1m"; cout << "Input Histogram named: " << nameHisto << endl;
+        weight_1M = (TH3F *) inputFile->Get(nameHisto);
+        nameHisto = nameHistoBase + "_2p"; cout << "Input Histogram named: " << nameHisto << endl;
+        weight_2P = (TH3F *) inputFile->Get(nameHisto);
+        nameHisto = nameHistoBase + "_2m"; cout << "Input Histogram named: " << nameHisto << endl;
+        weight_2M = (TH3F *) inputFile->Get(nameHisto);
+        nameHisto = nameHistoBase + "_3p"; cout << "Input Histogram named: " << nameHisto << endl;
+        weight_3P = (TH3F *) inputFile->Get(nameHisto);
+        nameHisto = nameHistoBase + "_3m"; cout << "Input Histogram named: " << nameHisto << endl;
+        weight_3M = (TH3F *) inputFile->Get(nameHisto);
+
+        }
+      task = new  AliAnalysisTask3PCorrelations(taskName);
+      //configure my task
+      task->SetDebugLevel(          debugLevel      ); 
+      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(              ptMin1           ); 
+      task->SetPtMax1(              ptMax1           ); 
+      task->SetEtaMin1(             etaMin1          ); 
+      task->SetEtaMax1(             etaMax1          ); 
+    task->SetPtMin2(              ptMin2           ); 
+    task->SetPtMax2(              ptMax2           ); 
+    task->SetEtaMin2(             etaMin2          ); 
+    task->SetEtaMax2(             etaMax2          ); 
+    task->SetPtMin3(              ptMin3           ); 
+    task->SetPtMax3(              ptMax3           ); 
+    task->SetEtaMin3(             etaMin3          ); 
+    task->SetEtaMax3(             etaMax3          ); 
+      task->SetDcaZMin(             dcaZMin         ); 
+      task->SetDcaZMax(             dcaZMax         ); 
+      task->SetDcaXYMin(            dcaXYMin        ); 
+      task->SetDcaXYMax(            dcaXYMax        ); 
+      task->SetDedxMin(             dedxMin         ); 
+      task->SetDedxMax(             dedxMax         ); 
+      task->SetNClusterMin(         nClusterMin     ); 
+      task->SetTrackFilterBit(      trackFilterBit  );
+    task->SetWeigth_1P(           weight_1P       );
+    task->SetWeigth_1M(           weight_1M       );
+    task->SetWeigth_2P(           weight_2P       );
+    task->SetWeigth_2M(           weight_2M       );
+    task->SetWeigth_3P(           weight_3P       );
+    task->SetWeigth_3M(           weight_3M       );
+
+      
+      
+      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;
+}