ROOT logo
AliProtonAnalysisBase *GetProtonAnalysisBaseObject(const char* analysisLevel = "ESD",
						   Bool_t kAnalyzeMC = kTRUE,
						   const char* esdAnalysisType = "Hybrid",
						   const char* pidMode = "Bayesian",
						   Bool_t kUseOnlineTrigger = kFALSE,
						   Bool_t kUseOfflineTrigger = kFALSE,
						   Bool_t kRunQA = kFALSE) {
  //Function to setup the AliProtonAnalysisBase object and return it
  AliProtonAnalysisBase *baseAnalysis = new AliProtonAnalysisBase();
  //baseAnalysis->SetDebugMode();
  if(kRunQA) baseAnalysis->SetRunQA();
  baseAnalysis->SetAnalysisLevel(analysisLevel);
  if(analysisLevel == "ESD") {
    if(kAnalyzeMC)
      baseAnalysis->SetTriggerMode(AliProtonAnalysisBase::kMB2);
    //use the offline trigger
    if(kUseOnlineTrigger) baseAnalysis->UseOnlineTrigger();

    //use the offline trigger
    if(kUseOfflineTrigger) baseAnalysis->OfflineTriggerInit();

    baseAnalysis->SetMinTPCClusters(80);
    baseAnalysis->SetMaxChi2PerTPCCluster(3.5);
    /*baseAnalysis->SetMaxCov11(2.0);
    baseAnalysis->SetMaxCov22(2.0);
    baseAnalysis->SetMaxCov33(0.5);
    baseAnalysis->SetMaxCov44(0.5);
    baseAnalysis->SetMaxCov55(2.0);*/
    baseAnalysis->SetMinTPCdEdxPoints(80);
    switch(esdAnalysisType) {
    case "TPC":
      baseAnalysis->SetAnalysisMode(AliProtonAnalysisBase::kTPC);
      baseAnalysis->SetPhaseSpace(10, -0.5, 0.5, 16, 0.5, 0.9);
      baseAnalysis->SetTPCpid();
      baseAnalysis->SetMaxSigmaToVertexTPC(2.0);
      //baseAnalysis->SetMaxDCAXYTPC(1.5);
      //baseAnalysis->SetMaxDCAZTPC(1.5);
      break;
    case "Hybrid":
      baseAnalysis->SetAnalysisMode(AliProtonAnalysisBase::kHybrid);
      baseAnalysis->SetPhaseSpace(9, -0.9, 0.9, 6, 0.45, 1.05);
      //baseAnalysis->SetPhaseSpace(18, -0.9, 0.9, 32, 0.5, 1.3);
      baseAnalysis->SetTPCpid();
      //baseAnalysis->SetMaxSigmaToVertex(3.0);
      //baseAnalysis->SetMaxDCAXY(0.5);
      //baseAnalysis->SetMaxDCAZ(0.7);
      baseAnalysis->SetMaxDCA3D(2.0);
      //baseAnalysis->SetPointOnITSLayer6();
      //baseAnalysis->SetPointOnITSLayer5();
      //baseAnalysis->SetPointOnITSLayer4();
      //baseAnalysis->SetPointOnITSLayer3();
      //baseAnalysis->SetPointOnITSLayer2();
      //baseAnalysis->SetPointOnITSLayer1();
      baseAnalysis->SetPointOnSPDLayers();
      baseAnalysis->SetMinITSClusters(2);
      break;
    case "FullHybrid":
      baseAnalysis->SetAnalysisMode(AliProtonAnalysisBase::kFullHybrid);
      baseAnalysis->SetPhaseSpace(9, -0.9, 0.9, 6, 0.45, 1.05);
      //baseAnalysis->SetPhaseSpace(18, -0.9, 0.9, 32, 0.5, 1.3);
      baseAnalysis->SetTPCpid();
      //baseAnalysis->SetMaxSigmaToVertex(3.0);
      //baseAnalysis->SetMaxDCAXY(0.2);
      //baseAnalysis->SetMaxDCAZ(0.7);
      //baseAnalysis->SetMaxDCA3D(0.2);
      baseAnalysis->SetPtDependentDCAxy(5,2.89575e+02,6.62161e+01,1.99085e+00);
      //baseAnalysis->SetPointOnITSLayer6();
      //baseAnalysis->SetPointOnITSLayer5();
      //baseAnalysis->SetPointOnITSLayer4();
      //baseAnalysis->SetPointOnITSLayer3();
      //baseAnalysis->SetPointOnITSLayer2();
      //baseAnalysis->SetPointOnITSLayer1();
      baseAnalysis->SetPointOnSPDLayers();
      baseAnalysis->SetMinITSClusters(2);
      break;
    case "Global":
      baseAnalysis->SetAnalysisMode(AliProtonAnalysisBase::kGlobal);
      baseAnalysis->SetPhaseSpace(20, -1.0, 1.0, 48, 0.3, 1.5);
      baseAnalysis->SetMaxSigmaToVertex(2.0);
      //baseAnalysis->SetMaxDCAXY(2.0);
      //baseAnalysis->SetMaxDCAZ(2.0);
      baseAnalysis->SetTPCRefit();
      baseAnalysis->SetPointOnITSLayer1();
      baseAnalysis->SetPointOnITSLayer2();
      //baseAnalysis->SetPointOnITSLayer3();
      //baseAnalysis->SetPointOnITSLayer4();
      baseAnalysis->SetPointOnITSLayer5();
      baseAnalysis->SetPointOnITSLayer6();
      baseAnalysis->SetMinITSClusters(5);
      baseAnalysis->SetITSRefit();
      baseAnalysis->SetESDpid();
      baseAnalysis->SetTOFpid();
      break;
    default:
      break;
    }
    baseAnalysis->SetAcceptedVertexDiamond(1.,1.,10.);
    baseAnalysis->SetMinNumOfContributors(0);
    //baseAnalysis->SetEtaMode();
    switch(pidMode) {
    case "Bayesian":
      baseAnalysis->SetPIDMode(AliProtonAnalysisBase::kBayesian);
      //Momentum dependent priors
      /*TFile *f = TFile::Open("$ALICE_ROOT/PWG2/data/PriorProbabilities.root ");
	TF1 *fitElectrons = (TF1 *)f->Get("fitElectrons");
	TF1 *fitMuons = (TF1 *)f->Get("fitMuons");
	TF1 *fitPions = (TF1 *)f->Get("fitPions");
	TF1 *fitKaons = (TF1 *)f->Get("fitKaons");
	TF1 *fitProtons = (TF1 *)f->Get("fitProtons");
	baseAnalysis->SetPriorProbabilityFunctions(fitElectrons,
	fitMuons,
	fitPions,
	fitKaons,
	fitProtons);*/
      //Fixed prior probabilities
      Double_t partFrac[5] = {0.01, 0.01, 0.85, 0.10, 0.05};
      if(!baseAnalysis->IsPriorProbabilityFunctionUsed())
	baseAnalysis->SetPriorProbabilities(partFrac);
      break;
    case "Ratio":
      baseAnalysis->SetPIDMode(AliProtonAnalysisBase::kRatio);
      baseAnalysis->SetRatio(-0.2);
      break;
    case "Sigma":
      baseAnalysis->SetPIDMode(AliProtonAnalysisBase::kSigma1);
      baseAnalysis->SetNSigma(4);
      break;
    default:
      break;
    }//PID mode
  }//ESD
  if(analysisLevel == "MC") 
    baseAnalysis->SetPhaseSpace(10, -0.5, 0.5, 16, 0.5, 0.9);
  if(analysisLevel == "AOD")
    baseAnalysis->SetPhaseSpace(10, -0.5, 0.5, 16, 0.5, 0.9);

  return baseAnalysis;
}
 configProtonAnalysisBaseObject.C:1
 configProtonAnalysisBaseObject.C:2
 configProtonAnalysisBaseObject.C:3
 configProtonAnalysisBaseObject.C:4
 configProtonAnalysisBaseObject.C:5
 configProtonAnalysisBaseObject.C:6
 configProtonAnalysisBaseObject.C:7
 configProtonAnalysisBaseObject.C:8
 configProtonAnalysisBaseObject.C:9
 configProtonAnalysisBaseObject.C:10
 configProtonAnalysisBaseObject.C:11
 configProtonAnalysisBaseObject.C:12
 configProtonAnalysisBaseObject.C:13
 configProtonAnalysisBaseObject.C:14
 configProtonAnalysisBaseObject.C:15
 configProtonAnalysisBaseObject.C:16
 configProtonAnalysisBaseObject.C:17
 configProtonAnalysisBaseObject.C:18
 configProtonAnalysisBaseObject.C:19
 configProtonAnalysisBaseObject.C:20
 configProtonAnalysisBaseObject.C:21
 configProtonAnalysisBaseObject.C:22
 configProtonAnalysisBaseObject.C:23
 configProtonAnalysisBaseObject.C:24
 configProtonAnalysisBaseObject.C:25
 configProtonAnalysisBaseObject.C:26
 configProtonAnalysisBaseObject.C:27
 configProtonAnalysisBaseObject.C:28
 configProtonAnalysisBaseObject.C:29
 configProtonAnalysisBaseObject.C:30
 configProtonAnalysisBaseObject.C:31
 configProtonAnalysisBaseObject.C:32
 configProtonAnalysisBaseObject.C:33
 configProtonAnalysisBaseObject.C:34
 configProtonAnalysisBaseObject.C:35
 configProtonAnalysisBaseObject.C:36
 configProtonAnalysisBaseObject.C:37
 configProtonAnalysisBaseObject.C:38
 configProtonAnalysisBaseObject.C:39
 configProtonAnalysisBaseObject.C:40
 configProtonAnalysisBaseObject.C:41
 configProtonAnalysisBaseObject.C:42
 configProtonAnalysisBaseObject.C:43
 configProtonAnalysisBaseObject.C:44
 configProtonAnalysisBaseObject.C:45
 configProtonAnalysisBaseObject.C:46
 configProtonAnalysisBaseObject.C:47
 configProtonAnalysisBaseObject.C:48
 configProtonAnalysisBaseObject.C:49
 configProtonAnalysisBaseObject.C:50
 configProtonAnalysisBaseObject.C:51
 configProtonAnalysisBaseObject.C:52
 configProtonAnalysisBaseObject.C:53
 configProtonAnalysisBaseObject.C:54
 configProtonAnalysisBaseObject.C:55
 configProtonAnalysisBaseObject.C:56
 configProtonAnalysisBaseObject.C:57
 configProtonAnalysisBaseObject.C:58
 configProtonAnalysisBaseObject.C:59
 configProtonAnalysisBaseObject.C:60
 configProtonAnalysisBaseObject.C:61
 configProtonAnalysisBaseObject.C:62
 configProtonAnalysisBaseObject.C:63
 configProtonAnalysisBaseObject.C:64
 configProtonAnalysisBaseObject.C:65
 configProtonAnalysisBaseObject.C:66
 configProtonAnalysisBaseObject.C:67
 configProtonAnalysisBaseObject.C:68
 configProtonAnalysisBaseObject.C:69
 configProtonAnalysisBaseObject.C:70
 configProtonAnalysisBaseObject.C:71
 configProtonAnalysisBaseObject.C:72
 configProtonAnalysisBaseObject.C:73
 configProtonAnalysisBaseObject.C:74
 configProtonAnalysisBaseObject.C:75
 configProtonAnalysisBaseObject.C:76
 configProtonAnalysisBaseObject.C:77
 configProtonAnalysisBaseObject.C:78
 configProtonAnalysisBaseObject.C:79
 configProtonAnalysisBaseObject.C:80
 configProtonAnalysisBaseObject.C:81
 configProtonAnalysisBaseObject.C:82
 configProtonAnalysisBaseObject.C:83
 configProtonAnalysisBaseObject.C:84
 configProtonAnalysisBaseObject.C:85
 configProtonAnalysisBaseObject.C:86
 configProtonAnalysisBaseObject.C:87
 configProtonAnalysisBaseObject.C:88
 configProtonAnalysisBaseObject.C:89
 configProtonAnalysisBaseObject.C:90
 configProtonAnalysisBaseObject.C:91
 configProtonAnalysisBaseObject.C:92
 configProtonAnalysisBaseObject.C:93
 configProtonAnalysisBaseObject.C:94
 configProtonAnalysisBaseObject.C:95
 configProtonAnalysisBaseObject.C:96
 configProtonAnalysisBaseObject.C:97
 configProtonAnalysisBaseObject.C:98
 configProtonAnalysisBaseObject.C:99
 configProtonAnalysisBaseObject.C:100
 configProtonAnalysisBaseObject.C:101
 configProtonAnalysisBaseObject.C:102
 configProtonAnalysisBaseObject.C:103
 configProtonAnalysisBaseObject.C:104
 configProtonAnalysisBaseObject.C:105
 configProtonAnalysisBaseObject.C:106
 configProtonAnalysisBaseObject.C:107
 configProtonAnalysisBaseObject.C:108
 configProtonAnalysisBaseObject.C:109
 configProtonAnalysisBaseObject.C:110
 configProtonAnalysisBaseObject.C:111
 configProtonAnalysisBaseObject.C:112
 configProtonAnalysisBaseObject.C:113
 configProtonAnalysisBaseObject.C:114
 configProtonAnalysisBaseObject.C:115
 configProtonAnalysisBaseObject.C:116
 configProtonAnalysisBaseObject.C:117
 configProtonAnalysisBaseObject.C:118
 configProtonAnalysisBaseObject.C:119
 configProtonAnalysisBaseObject.C:120
 configProtonAnalysisBaseObject.C:121
 configProtonAnalysisBaseObject.C:122
 configProtonAnalysisBaseObject.C:123
 configProtonAnalysisBaseObject.C:124
 configProtonAnalysisBaseObject.C:125
 configProtonAnalysisBaseObject.C:126
 configProtonAnalysisBaseObject.C:127
 configProtonAnalysisBaseObject.C:128
 configProtonAnalysisBaseObject.C:129
 configProtonAnalysisBaseObject.C:130
 configProtonAnalysisBaseObject.C:131
 configProtonAnalysisBaseObject.C:132
 configProtonAnalysisBaseObject.C:133
 configProtonAnalysisBaseObject.C:134
 configProtonAnalysisBaseObject.C:135
 configProtonAnalysisBaseObject.C:136
 configProtonAnalysisBaseObject.C:137
 configProtonAnalysisBaseObject.C:138
 configProtonAnalysisBaseObject.C:139