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