ROOT logo
// 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: --
/////////////////////////////////////////////////////////////////////////////////
AliAnalysisTaskpypy *AddTaskPyPy
(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] = 30.;  maxCentrality[1]  = 40.;
        minCentrality[2] = 60.;  maxCentrality[2]  = 70.;
        
      }
    else
      {
      return 0;
      }
    }
  else if (system==1) // pPb
    {
    if (centralityMethod == 7)
      {
	minCentrality[0] = 0;   maxCentrality[0] = 20.0;
	minCentrality[1] = 20.; maxCentrality[1] = 40.;
	minCentrality[2] = 40.; maxCentrality[2] = 60.;
	minCentrality[3] = 60.; maxCentrality[3] = 80.;
      }
    else
      {
      return 0;
      }
    }
  else
    {
    return 0;
    }
  double ptMin                  =  0.2;
  double ptMax                  =  2.0;
  double dedxMin                =  0.0;
  double dedxMax                =  20000.0;
  int    requestedCharge1       =  1; //default
  int    requestedCharge2       = -1; //default
  // ==============================================================================
  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;
  AliAnalysisTaskpypy* 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  AliAnalysisTaskpypy(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));
      analysisManager->AddTask(task);
      analysisManager->ConnectInput( task,  0, analysisManager->GetCommonInputContainer());
      analysisManager->ConnectOutput(task,  0, taskOutputContainer );
      iTask++;
    }
  return task;
}
 AddTaskPyPy.C:1
 AddTaskPyPy.C:2
 AddTaskPyPy.C:3
 AddTaskPyPy.C:4
 AddTaskPyPy.C:5
 AddTaskPyPy.C:6
 AddTaskPyPy.C:7
 AddTaskPyPy.C:8
 AddTaskPyPy.C:9
 AddTaskPyPy.C:10
 AddTaskPyPy.C:11
 AddTaskPyPy.C:12
 AddTaskPyPy.C:13
 AddTaskPyPy.C:14
 AddTaskPyPy.C:15
 AddTaskPyPy.C:16
 AddTaskPyPy.C:17
 AddTaskPyPy.C:18
 AddTaskPyPy.C:19
 AddTaskPyPy.C:20
 AddTaskPyPy.C:21
 AddTaskPyPy.C:22
 AddTaskPyPy.C:23
 AddTaskPyPy.C:24
 AddTaskPyPy.C:25
 AddTaskPyPy.C:26
 AddTaskPyPy.C:27
 AddTaskPyPy.C:28
 AddTaskPyPy.C:29
 AddTaskPyPy.C:30
 AddTaskPyPy.C:31
 AddTaskPyPy.C:32
 AddTaskPyPy.C:33
 AddTaskPyPy.C:34
 AddTaskPyPy.C:35
 AddTaskPyPy.C:36
 AddTaskPyPy.C:37
 AddTaskPyPy.C:38
 AddTaskPyPy.C:39
 AddTaskPyPy.C:40
 AddTaskPyPy.C:41
 AddTaskPyPy.C:42
 AddTaskPyPy.C:43
 AddTaskPyPy.C:44
 AddTaskPyPy.C:45
 AddTaskPyPy.C:46
 AddTaskPyPy.C:47
 AddTaskPyPy.C:48
 AddTaskPyPy.C:49
 AddTaskPyPy.C:50
 AddTaskPyPy.C:51
 AddTaskPyPy.C:52
 AddTaskPyPy.C:53
 AddTaskPyPy.C:54
 AddTaskPyPy.C:55
 AddTaskPyPy.C:56
 AddTaskPyPy.C:57
 AddTaskPyPy.C:58
 AddTaskPyPy.C:59
 AddTaskPyPy.C:60
 AddTaskPyPy.C:61
 AddTaskPyPy.C:62
 AddTaskPyPy.C:63
 AddTaskPyPy.C:64
 AddTaskPyPy.C:65
 AddTaskPyPy.C:66
 AddTaskPyPy.C:67
 AddTaskPyPy.C:68
 AddTaskPyPy.C:69
 AddTaskPyPy.C:70
 AddTaskPyPy.C:71
 AddTaskPyPy.C:72
 AddTaskPyPy.C:73
 AddTaskPyPy.C:74
 AddTaskPyPy.C:75
 AddTaskPyPy.C:76
 AddTaskPyPy.C:77
 AddTaskPyPy.C:78
 AddTaskPyPy.C:79
 AddTaskPyPy.C:80
 AddTaskPyPy.C:81
 AddTaskPyPy.C:82
 AddTaskPyPy.C:83
 AddTaskPyPy.C:84
 AddTaskPyPy.C:85
 AddTaskPyPy.C:86
 AddTaskPyPy.C:87
 AddTaskPyPy.C:88
 AddTaskPyPy.C:89
 AddTaskPyPy.C:90
 AddTaskPyPy.C:91
 AddTaskPyPy.C:92
 AddTaskPyPy.C:93
 AddTaskPyPy.C:94
 AddTaskPyPy.C:95
 AddTaskPyPy.C:96
 AddTaskPyPy.C:97
 AddTaskPyPy.C:98
 AddTaskPyPy.C:99
 AddTaskPyPy.C:100
 AddTaskPyPy.C:101
 AddTaskPyPy.C:102
 AddTaskPyPy.C:103
 AddTaskPyPy.C:104
 AddTaskPyPy.C:105
 AddTaskPyPy.C:106
 AddTaskPyPy.C:107
 AddTaskPyPy.C:108
 AddTaskPyPy.C:109
 AddTaskPyPy.C:110
 AddTaskPyPy.C:111
 AddTaskPyPy.C:112
 AddTaskPyPy.C:113
 AddTaskPyPy.C:114
 AddTaskPyPy.C:115
 AddTaskPyPy.C:116
 AddTaskPyPy.C:117
 AddTaskPyPy.C:118
 AddTaskPyPy.C:119
 AddTaskPyPy.C:120
 AddTaskPyPy.C:121
 AddTaskPyPy.C:122
 AddTaskPyPy.C:123
 AddTaskPyPy.C:124
 AddTaskPyPy.C:125
 AddTaskPyPy.C:126
 AddTaskPyPy.C:127
 AddTaskPyPy.C:128
 AddTaskPyPy.C:129
 AddTaskPyPy.C:130
 AddTaskPyPy.C:131
 AddTaskPyPy.C:132
 AddTaskPyPy.C:133
 AddTaskPyPy.C:134
 AddTaskPyPy.C:135
 AddTaskPyPy.C:136
 AddTaskPyPy.C:137
 AddTaskPyPy.C:138
 AddTaskPyPy.C:139
 AddTaskPyPy.C:140
 AddTaskPyPy.C:141
 AddTaskPyPy.C:142
 AddTaskPyPy.C:143
 AddTaskPyPy.C:144
 AddTaskPyPy.C:145
 AddTaskPyPy.C:146
 AddTaskPyPy.C:147
 AddTaskPyPy.C:148
 AddTaskPyPy.C:149
 AddTaskPyPy.C:150
 AddTaskPyPy.C:151
 AddTaskPyPy.C:152
 AddTaskPyPy.C:153
 AddTaskPyPy.C:154
 AddTaskPyPy.C:155
 AddTaskPyPy.C:156
 AddTaskPyPy.C:157
 AddTaskPyPy.C:158
 AddTaskPyPy.C:159
 AddTaskPyPy.C:160
 AddTaskPyPy.C:161
 AddTaskPyPy.C:162
 AddTaskPyPy.C:163
 AddTaskPyPy.C:164
 AddTaskPyPy.C:165
 AddTaskPyPy.C:166
 AddTaskPyPy.C:167
 AddTaskPyPy.C:168
 AddTaskPyPy.C:169
 AddTaskPyPy.C:170
 AddTaskPyPy.C:171
 AddTaskPyPy.C:172
 AddTaskPyPy.C:173
 AddTaskPyPy.C:174
 AddTaskPyPy.C:175
 AddTaskPyPy.C:176
 AddTaskPyPy.C:177
 AddTaskPyPy.C:178
 AddTaskPyPy.C:179
 AddTaskPyPy.C:180
 AddTaskPyPy.C:181
 AddTaskPyPy.C:182
 AddTaskPyPy.C:183
 AddTaskPyPy.C:184
 AddTaskPyPy.C:185
 AddTaskPyPy.C:186
 AddTaskPyPy.C:187
 AddTaskPyPy.C:188
 AddTaskPyPy.C:189
 AddTaskPyPy.C:190
 AddTaskPyPy.C:191
 AddTaskPyPy.C:192
 AddTaskPyPy.C:193
 AddTaskPyPy.C:194
 AddTaskPyPy.C:195
 AddTaskPyPy.C:196
 AddTaskPyPy.C:197
 AddTaskPyPy.C:198
 AddTaskPyPy.C:199
 AddTaskPyPy.C:200
 AddTaskPyPy.C:201
 AddTaskPyPy.C:202
 AddTaskPyPy.C:203
 AddTaskPyPy.C:204
 AddTaskPyPy.C:205
 AddTaskPyPy.C:206
 AddTaskPyPy.C:207
 AddTaskPyPy.C:208
 AddTaskPyPy.C:209
 AddTaskPyPy.C:210
 AddTaskPyPy.C:211
 AddTaskPyPy.C:212
 AddTaskPyPy.C:213
 AddTaskPyPy.C:214
 AddTaskPyPy.C:215
 AddTaskPyPy.C:216
 AddTaskPyPy.C:217
 AddTaskPyPy.C:218
 AddTaskPyPy.C:219
 AddTaskPyPy.C:220
 AddTaskPyPy.C:221
 AddTaskPyPy.C:222
 AddTaskPyPy.C:223
 AddTaskPyPy.C:224
 AddTaskPyPy.C:225
 AddTaskPyPy.C:226
 AddTaskPyPy.C:227
 AddTaskPyPy.C:228
 AddTaskPyPy.C:229
 AddTaskPyPy.C:230
 AddTaskPyPy.C:231
 AddTaskPyPy.C:232
 AddTaskPyPy.C:233
 AddTaskPyPy.C:234
 AddTaskPyPy.C:235
 AddTaskPyPy.C:236
 AddTaskPyPy.C:237
 AddTaskPyPy.C:238
 AddTaskPyPy.C:239
 AddTaskPyPy.C:240
 AddTaskPyPy.C:241
 AddTaskPyPy.C:242
 AddTaskPyPy.C:243
 AddTaskPyPy.C:244
 AddTaskPyPy.C:245
 AddTaskPyPy.C:246
 AddTaskPyPy.C:247
 AddTaskPyPy.C:248
 AddTaskPyPy.C:249
 AddTaskPyPy.C:250
 AddTaskPyPy.C:251
 AddTaskPyPy.C:252
 AddTaskPyPy.C:253
 AddTaskPyPy.C:254
 AddTaskPyPy.C:255
 AddTaskPyPy.C:256
 AddTaskPyPy.C:257
 AddTaskPyPy.C:258
 AddTaskPyPy.C:259
 AddTaskPyPy.C:260
 AddTaskPyPy.C:261
 AddTaskPyPy.C:262
 AddTaskPyPy.C:263
 AddTaskPyPy.C:264
 AddTaskPyPy.C:265
 AddTaskPyPy.C:266