ROOT logo
/* *************************************************************************
 *             AliEbyE Analysis for Particle Ratio Fluctuation             *
 *                   Deepika Rathee  | Satyajit Jena                       *
 *                   drathee@cern.ch | sjena@cern.ch                       *
 *                  Date: Wed Jul  9 18:38:30 CEST 2014                    * 
 *          New approch to find particle ratio to reduce memory            *
 *                             (Test Only)                                 *
 ***************************************************************************/

AliAnalysisTask *AddEbyEPidRatioTaskV2(const Char_t *name      = "NuDyn", //  0      
				     Int_t   isModeDist      = 1,       //  1
				     Int_t   isModeEff       = 0,       //  2
				     Bool_t  isModeDCA       = 0,       //  3
				     Bool_t  isModeQA        = 0,       //  4
				     Int_t   isRatio         = 3,       //  5
				     Bool_t  isModeAOD       = 0,       //  6
				     Bool_t  isSetExt        = 0,       //  7
				     Int_t   aodFilterBit    = 1024,    //  8 
				     Float_t gEta            = 0.8,     //  9
				     Int_t   modeCuts        = 0,       // 10 
				     Int_t   modePID         =-1,       // 11
				     Float_t gMinPt          = 0.3,     // 12
				     Float_t gMaxPt          = 2.5,     // 13
				     Float_t gMinPtForTof    = 0.21,    // 14
				     Float_t gMaxPtForTPClow = 0.69,    // 15
				     Float_t gMinPtEff       = 0.3,     // 16
				     Float_t gMaxPtEff       = 2.5,     // 17 
				     Float_t gSigmaITS       = 4.0,     // 18
				     Float_t gSigmaTOF       = 4.0,     // 19
				     Float_t gSigmaTPC       = 4.0,     // 20
				     Float_t gSigmaTPClow    = 3.0,
				     Bool_t  isPer           = 0,
				     Int_t   nSub            = 25) {   // 21
  
  TString sName(name);

  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
  if (!mgr) {
    Error("AddTaskNetParticle", "No analysis manager found.");
    return NULL;
  }
  
  Bool_t isMC = (mgr->GetMCtruthEventHandler() != NULL);
  if (isMC)
    Info("AddTaskNetParticle", "This task has MC.");
  
  AliEbyEPidRatioTask *task = new AliEbyEPidRatioTask("EbyEPidRatio");
  if (!task) {
    Error("EbyEPidRatio", "Task could not be created.");
    return NULL;
  }

  if (isMC) 
    task->SetIsMC();
  if (isModeEff == 1) {
    task->SetModeEffCreation(1);             // => 1 = on    | 0 = off (default)
  } else if (isModeEff == 2) {
    task->SetModeEffCreation(1);             // => 1 = on    | 0 = off (default)
    task->SetEffExtra();             // => 1 = on    | 0 = off (default)
  }
  if (isModeDCA)
    task->SetModeDCACreation(1);             // => 1 = on    | 0 = off (default)
     
  if (isModeAOD) {
    task->SetIsAOD(1);                       // => 1 = AOD   | 0 = ESD (default)
    task->SetTrackFilterBit(aodFilterBit);   
  }
  if (isModeQA)
    task->SetModeQACreation(1);              // => 1 = on    | 0 = off (default)
  
  task->SetModeDistCreation(isModeDist);  // 0 nothing, 1 only dist, 2, with qa            
  task->SetIsRatio(isRatio);

  Float_t minPt,     maxPt,     minPtEff,     maxPtEff,  minPtForTOF;
  Float_t nSigmaITS, nSigmaTPC, nSigmaTPClow, nSigmaTOF, maxPtForTPClow; 
  Float_t etaMax,    etaMaxEff, maxRap; 
  Int_t   pidStrategy;

  minPtForTOF    = 0.69;   
  maxPtForTPClow = 0.69;
  minPt          = 0.5;     
  maxPt          = 2.0; 
  minPtEff       = 0.3;    
  maxPtEff       = 2.5; 
  
  maxRap         = 0.5;
  etaMax         = 0.8;  
 
  etaMaxEff      = 0.8;  
  nSigmaITS      = 4.0;   
  nSigmaTPC      = 4.0;   
  nSigmaTPClow   = 3.0;   
  nSigmaTOF      = 4.0; 
    
  if (isSetExt) {
    minPt          = gMinPt;    
    maxPt          = gMaxPt;
    minPtForTOF    = gMinPtForTof;     
    maxPtForTPClow = gMaxPtForTPClow;
    minPtEff       = gMinPtEff;
    maxPtEff       = gMaxPtEff;

    etaMax         = gEta;

    nSigmaITS      = gSigmaITS;   
    nSigmaTPC      = gSigmaTPC;   
    nSigmaTPClow   = gSigmaTPClow;  
    nSigmaTOF      = gSigmaTOF;
  }
 
  if (modePID    == -1) { // default
    pidStrategy   = 7;         // 7: ITS + TPC + TOF (using minPtForTOF)
    if (modeCuts == 1)
      pidStrategy = 5;       // 5: TPC + TOF (using minPtForTOF) 
  }
  else
    pidStrategy = modePID;
  
  AliEbyEPidRatioHelper *helper = new AliEbyEPidRatioHelper;
  if (!helper) {
    Error("AddTaskNetParticle", "Helper could not be created.");
    delete task;
    return NULL;
  }
  

  task->SetESDTrackCutMode(modeCuts);       // => 0 = normal | 1 = LF
  task->SetEtaMax(etaMax);                  // eta cut
  task->SetEtaMaxEff(etaMaxEff);            // eta cut for efficiency
  task->SetPtRange(minPt, maxPt);           // pt cut range for the analysis
  task->SetPtRangeEff(minPtEff, maxPtEff);  // pt cut range for the correction / efficiency / contamination creation
  if (isPer) task->SetIsPer();  // 
 
  helper->SetVertexZMax(10.);   
  helper->SetCentralityBinMax(11);
  helper->SetRapidityMax(maxRap); 
  helper->SetMinTrackLengthMC(70.);  
  helper->SetNSigmaMaxCdd(0.);              //  3. ||   ->> Turn off sigmaDCA cuts for now
  helper->SetNSigmaMaxCzz(0.);              //  3. ||   ->> Turn off sigmaDCA cuts for now
  helper->SetPhiRange(0., 3.88);            //  Only used if requested in task - default is TwoPi
  helper->SetPIDStrategy(pidStrategy);
  helper->SetNSigmaMaxITS(nSigmaITS);
  helper->SetNSigmaMaxTPC(nSigmaTPC);
  helper->SetNSigmaMaxTPClow(nSigmaTPClow);
  helper->SetNSigmaMaxTOF(nSigmaTOF);
  helper->SetMinPtForTOFRequired(minPtForTOF);
  helper->SetMaxPtForTPClow(maxPtForTPClow);
  helper->SetNSubSamples(nSub);
  
  task->SetNetParticleHelper(helper);
  mgr->AddTask(task);
  
  AliAnalysisDataContainer *cinput  = mgr->GetCommonInputContainer();
  TString outputFileName   = Form("%s:%s", AliAnalysisManager::GetCommonFileName(), name);
  TString outputQAFileName = Form("%s:%s", AliAnalysisManager::GetCommonFileName(), name);
    
  AliAnalysisDataContainer *coutput     = mgr->CreateContainer(name, TList::Class(),  AliAnalysisManager::kOutputContainer, outputFileName);
  AliAnalysisDataContainer *coutputEff  = mgr->CreateContainer(Form("%s_eff",  name), TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName);
  AliAnalysisDataContainer *coutputCont = mgr->CreateContainer(Form("%s_cont", name), TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName);
  AliAnalysisDataContainer *coutputDca  = mgr->CreateContainer(Form("%s_dca",  name), TList::Class(), AliAnalysisManager::kOutputContainer, outputFileName);

  AliAnalysisDataContainer *coutputQA   = mgr->CreateContainer(Form("%sQA",    name), TList::Class(), AliAnalysisManager::kOutputContainer, outputQAFileName);
    
  mgr->ConnectInput  (task,  0, cinput );
  mgr->ConnectOutput (task,  1, coutput);
  mgr->ConnectOutput (task,  2, coutputEff);
  mgr->ConnectOutput (task,  3, coutputCont);
  mgr->ConnectOutput (task,  4, coutputDca);
  mgr->ConnectOutput (task,  5, coutputQA);

  return task;
}
 AddEbyEPidRatioTaskV2.C:1
 AddEbyEPidRatioTaskV2.C:2
 AddEbyEPidRatioTaskV2.C:3
 AddEbyEPidRatioTaskV2.C:4
 AddEbyEPidRatioTaskV2.C:5
 AddEbyEPidRatioTaskV2.C:6
 AddEbyEPidRatioTaskV2.C:7
 AddEbyEPidRatioTaskV2.C:8
 AddEbyEPidRatioTaskV2.C:9
 AddEbyEPidRatioTaskV2.C:10
 AddEbyEPidRatioTaskV2.C:11
 AddEbyEPidRatioTaskV2.C:12
 AddEbyEPidRatioTaskV2.C:13
 AddEbyEPidRatioTaskV2.C:14
 AddEbyEPidRatioTaskV2.C:15
 AddEbyEPidRatioTaskV2.C:16
 AddEbyEPidRatioTaskV2.C:17
 AddEbyEPidRatioTaskV2.C:18
 AddEbyEPidRatioTaskV2.C:19
 AddEbyEPidRatioTaskV2.C:20
 AddEbyEPidRatioTaskV2.C:21
 AddEbyEPidRatioTaskV2.C:22
 AddEbyEPidRatioTaskV2.C:23
 AddEbyEPidRatioTaskV2.C:24
 AddEbyEPidRatioTaskV2.C:25
 AddEbyEPidRatioTaskV2.C:26
 AddEbyEPidRatioTaskV2.C:27
 AddEbyEPidRatioTaskV2.C:28
 AddEbyEPidRatioTaskV2.C:29
 AddEbyEPidRatioTaskV2.C:30
 AddEbyEPidRatioTaskV2.C:31
 AddEbyEPidRatioTaskV2.C:32
 AddEbyEPidRatioTaskV2.C:33
 AddEbyEPidRatioTaskV2.C:34
 AddEbyEPidRatioTaskV2.C:35
 AddEbyEPidRatioTaskV2.C:36
 AddEbyEPidRatioTaskV2.C:37
 AddEbyEPidRatioTaskV2.C:38
 AddEbyEPidRatioTaskV2.C:39
 AddEbyEPidRatioTaskV2.C:40
 AddEbyEPidRatioTaskV2.C:41
 AddEbyEPidRatioTaskV2.C:42
 AddEbyEPidRatioTaskV2.C:43
 AddEbyEPidRatioTaskV2.C:44
 AddEbyEPidRatioTaskV2.C:45
 AddEbyEPidRatioTaskV2.C:46
 AddEbyEPidRatioTaskV2.C:47
 AddEbyEPidRatioTaskV2.C:48
 AddEbyEPidRatioTaskV2.C:49
 AddEbyEPidRatioTaskV2.C:50
 AddEbyEPidRatioTaskV2.C:51
 AddEbyEPidRatioTaskV2.C:52
 AddEbyEPidRatioTaskV2.C:53
 AddEbyEPidRatioTaskV2.C:54
 AddEbyEPidRatioTaskV2.C:55
 AddEbyEPidRatioTaskV2.C:56
 AddEbyEPidRatioTaskV2.C:57
 AddEbyEPidRatioTaskV2.C:58
 AddEbyEPidRatioTaskV2.C:59
 AddEbyEPidRatioTaskV2.C:60
 AddEbyEPidRatioTaskV2.C:61
 AddEbyEPidRatioTaskV2.C:62
 AddEbyEPidRatioTaskV2.C:63
 AddEbyEPidRatioTaskV2.C:64
 AddEbyEPidRatioTaskV2.C:65
 AddEbyEPidRatioTaskV2.C:66
 AddEbyEPidRatioTaskV2.C:67
 AddEbyEPidRatioTaskV2.C:68
 AddEbyEPidRatioTaskV2.C:69
 AddEbyEPidRatioTaskV2.C:70
 AddEbyEPidRatioTaskV2.C:71
 AddEbyEPidRatioTaskV2.C:72
 AddEbyEPidRatioTaskV2.C:73
 AddEbyEPidRatioTaskV2.C:74
 AddEbyEPidRatioTaskV2.C:75
 AddEbyEPidRatioTaskV2.C:76
 AddEbyEPidRatioTaskV2.C:77
 AddEbyEPidRatioTaskV2.C:78
 AddEbyEPidRatioTaskV2.C:79
 AddEbyEPidRatioTaskV2.C:80
 AddEbyEPidRatioTaskV2.C:81
 AddEbyEPidRatioTaskV2.C:82
 AddEbyEPidRatioTaskV2.C:83
 AddEbyEPidRatioTaskV2.C:84
 AddEbyEPidRatioTaskV2.C:85
 AddEbyEPidRatioTaskV2.C:86
 AddEbyEPidRatioTaskV2.C:87
 AddEbyEPidRatioTaskV2.C:88
 AddEbyEPidRatioTaskV2.C:89
 AddEbyEPidRatioTaskV2.C:90
 AddEbyEPidRatioTaskV2.C:91
 AddEbyEPidRatioTaskV2.C:92
 AddEbyEPidRatioTaskV2.C:93
 AddEbyEPidRatioTaskV2.C:94
 AddEbyEPidRatioTaskV2.C:95
 AddEbyEPidRatioTaskV2.C:96
 AddEbyEPidRatioTaskV2.C:97
 AddEbyEPidRatioTaskV2.C:98
 AddEbyEPidRatioTaskV2.C:99
 AddEbyEPidRatioTaskV2.C:100
 AddEbyEPidRatioTaskV2.C:101
 AddEbyEPidRatioTaskV2.C:102
 AddEbyEPidRatioTaskV2.C:103
 AddEbyEPidRatioTaskV2.C:104
 AddEbyEPidRatioTaskV2.C:105
 AddEbyEPidRatioTaskV2.C:106
 AddEbyEPidRatioTaskV2.C:107
 AddEbyEPidRatioTaskV2.C:108
 AddEbyEPidRatioTaskV2.C:109
 AddEbyEPidRatioTaskV2.C:110
 AddEbyEPidRatioTaskV2.C:111
 AddEbyEPidRatioTaskV2.C:112
 AddEbyEPidRatioTaskV2.C:113
 AddEbyEPidRatioTaskV2.C:114
 AddEbyEPidRatioTaskV2.C:115
 AddEbyEPidRatioTaskV2.C:116
 AddEbyEPidRatioTaskV2.C:117
 AddEbyEPidRatioTaskV2.C:118
 AddEbyEPidRatioTaskV2.C:119
 AddEbyEPidRatioTaskV2.C:120
 AddEbyEPidRatioTaskV2.C:121
 AddEbyEPidRatioTaskV2.C:122
 AddEbyEPidRatioTaskV2.C:123
 AddEbyEPidRatioTaskV2.C:124
 AddEbyEPidRatioTaskV2.C:125
 AddEbyEPidRatioTaskV2.C:126
 AddEbyEPidRatioTaskV2.C:127
 AddEbyEPidRatioTaskV2.C:128
 AddEbyEPidRatioTaskV2.C:129
 AddEbyEPidRatioTaskV2.C:130
 AddEbyEPidRatioTaskV2.C:131
 AddEbyEPidRatioTaskV2.C:132
 AddEbyEPidRatioTaskV2.C:133
 AddEbyEPidRatioTaskV2.C:134
 AddEbyEPidRatioTaskV2.C:135
 AddEbyEPidRatioTaskV2.C:136
 AddEbyEPidRatioTaskV2.C:137
 AddEbyEPidRatioTaskV2.C:138
 AddEbyEPidRatioTaskV2.C:139
 AddEbyEPidRatioTaskV2.C:140
 AddEbyEPidRatioTaskV2.C:141
 AddEbyEPidRatioTaskV2.C:142
 AddEbyEPidRatioTaskV2.C:143
 AddEbyEPidRatioTaskV2.C:144
 AddEbyEPidRatioTaskV2.C:145
 AddEbyEPidRatioTaskV2.C:146
 AddEbyEPidRatioTaskV2.C:147
 AddEbyEPidRatioTaskV2.C:148
 AddEbyEPidRatioTaskV2.C:149
 AddEbyEPidRatioTaskV2.C:150
 AddEbyEPidRatioTaskV2.C:151
 AddEbyEPidRatioTaskV2.C:152
 AddEbyEPidRatioTaskV2.C:153
 AddEbyEPidRatioTaskV2.C:154
 AddEbyEPidRatioTaskV2.C:155
 AddEbyEPidRatioTaskV2.C:156
 AddEbyEPidRatioTaskV2.C:157
 AddEbyEPidRatioTaskV2.C:158
 AddEbyEPidRatioTaskV2.C:159
 AddEbyEPidRatioTaskV2.C:160
 AddEbyEPidRatioTaskV2.C:161
 AddEbyEPidRatioTaskV2.C:162
 AddEbyEPidRatioTaskV2.C:163
 AddEbyEPidRatioTaskV2.C:164
 AddEbyEPidRatioTaskV2.C:165
 AddEbyEPidRatioTaskV2.C:166
 AddEbyEPidRatioTaskV2.C:167
 AddEbyEPidRatioTaskV2.C:168
 AddEbyEPidRatioTaskV2.C:169
 AddEbyEPidRatioTaskV2.C:170
 AddEbyEPidRatioTaskV2.C:171
 AddEbyEPidRatioTaskV2.C:172
 AddEbyEPidRatioTaskV2.C:173