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