ROOT logo
//
// Macro designed for use with the AliDptDptInMC 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: --
/////////////////////////////////////////////////////////////////////////////////

AliDptDptInMC *AddTaskCorrMC
(int    singlesOnly            = 1,
 int    useWeights             = 0,
 int    centralityMethod       = 4,
 int    chargeSet              = 1,
 int    trackFilterBit         = 128,
 double etaMin                 = -0.8,
 double etaMax                 =  0.8,
 double dcaZMin                = -3.0,
 double dcaZMax                =  3.0,
 double dcaXYMin               = -2.4,
 double dcaXYMax               =  2.4,
 int nCentrality               =  5, 
 TString anadata               = "MCAODreco",
 Bool_t NoResonances           =  kTRUE,
 Bool_t NoElectron             =  kTRUE,
 const char* taskname          = "MCTruth",
 char *inputHistogramFileName  = "alien:///alice/cern.ch/user/p/prabhat/MCCalib/MCTruthCaalib.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 (centralityMethod == 4)
	{
	  
	  minCentrality[0] = 0.0; maxCentrality[0] = 10.0; 
	  minCentrality[1] = 10.0; maxCentrality[1] = 20.0; 
	  minCentrality[2] = 20.0; maxCentrality[2] = 30.0; 
	  minCentrality[3] = 30.0; maxCentrality[3] = 40.0;
	  minCentrality[4] = 60.0; maxCentrality[4] = 70.0;
	  
	}
      else
	{
	  cout << "-F- AddTaskDptDptCorrelations() system:" << system << ". centralityMethod:" << centralityMethod << " Option NOT AVAILABLE. ABORT."
	    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;
  AliDptDptInMC* 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 += "_";
      part1Name += int(1000*dcaZMin);
      part1Name += "DCA";
      part1Name += int(1000*dcaZMax);
      part1Name += "_";


      //part2Name += int(1000*etaMin);                                                                                        
      part2Name += "eta";
      part2Name += int(1000*etaMax);
      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  AliDptDptInMC(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        ); 
      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        );
      task->SetAnalysisType(anadata);
      
      task->SelectCollisionCandidates(AliVEvent::kMB);

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