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