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