ROOT logo
AliAnalysisTaskHFE *ConfigHFEtrd2SYS(Bool_t useMC, UChar_t TPCcl=70, UChar_t TPCclPID = 80, UChar_t ITScl=3, 
				     Double_t DCAxy=1000., Double_t DCAz=1000.,
				     Double_t TPCs=0., Double_t TPCu=3., Double_t TOFs=3., UChar_t TRDtl = 5, UChar_t TRDeff = 2, 
				     Bool_t TRDonFlyCut = kFALSE, Bool_t TRDexactTracklets = kFALSE){
  //Bool_t IsBinning1 = kTRUE;
  //
  // HFE standard task configuration
  // 4 Tracklets, 70% electron efficiency
  //
  Bool_t kAnalyseTaggedTracks = kTRUE;

  //AliLog::SetClassDebugLevel("AliHFEOADBThresholdsTRD", 1);
  //AliLog::SetClassDebugLevel("AliHFEpidTRD", 1);
  //AliLog::SetClassDebugLevel("AliAnalysisTaskHFE", 2);
  Float_t eeff[6] = {0.7, 0.75, 0.8, 0.85, 0.9, 0.95};
  Int_t eeffint[6] = {70, 75, 80, 85, 90, 95};
  if(TRDeff >= 6 || TRDtl < 4 || TRDtl > 6) return NULL;
  Int_t iDCAxy = (Int_t)(DCAxy*10.);
  Int_t iDCAz = (Int_t)(DCAz*10.);
  Int_t iTPCs = (Int_t)(TPCs*100.);
  Int_t iTOFs = (Int_t)(TOFs*100.);
  printf("\n hfeCutsTRD2t%di%dr%dz%ds%d \n",TPCcl,ITScl,iDCAxy,iDCAz,iTPCs);

  AliHFEcuts *hfecuts = new AliHFEcuts(Form("hfeCutsTRD2t%dtp%di%dr%dz%ds%dst%dtt%d%ste%d%s",TPCcl,TPCclPID,ITScl,iDCAxy,iDCAz,iTPCs,iTOFs,TRDtl, TRDexactTracklets ? "EQ" : "GE",eeffint[TRDeff], TRDonFlyCut ? "OTF" : "Normal"),"HFE cuts including TRD PID");
  hfecuts->CreateStandardCuts();
  hfecuts->SetMinNClustersTPC(TPCcl);
  hfecuts->SetMinNClustersTPCPID(TPCclPID);
  hfecuts->SetMinNClustersITS(ITScl);
  hfecuts->SetMinRatioTPCclusters(0.6);
  hfecuts->SetTPCmodes(AliHFEextraCuts::kFound, AliHFEextraCuts::kFoundOverFindable);
  hfecuts->SetCutITSpixel(AliHFEextraCuts::kFirst);
  hfecuts->SetCheckITSLayerStatus(kFALSE);
  hfecuts->SetIPcutParam(0,0,0,2,kTRUE);

  hfecuts->SetMaxImpactParam(DCAxy,DCAz);

  hfecuts->SetTOFPIDStep(kFALSE);
  hfecuts->SetQAOn();
  hfecuts->SetMinNTrackletsTRD(TRDtl, TRDexactTracklets);   // number of trd tracklets
  hfecuts->SetUseMixedVertex(kTRUE);
  hfecuts->SetVertexRange(10.);

  AliAnalysisTaskHFE *task = new AliAnalysisTaskHFE(Form("HFEanalysisTRD2t%dtp%di%dr%dz%ds%dst%dtt%dte%d%s",TPCcl,TPCclPID,ITScl,iDCAxy,iDCAz,iTPCs, iTOFs, TRDtl, eeffint[TRDeff], TRDonFlyCut ? "OTF" : "Normal"));
  task->SetFillSignalOnly(kTRUE); //kFALSE
  task->SetHFECuts(hfecuts);
  task->SetRemovePileUp(kTRUE);
  if(!useMC) task->SelectSpecialTrigger("CINT1WU-B-NOPF-ALL", 127712, 130850);   // TRD pretriggered for period LHC10e

  // Define Variables
  Double_t ptbinning1[36] = {0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1., 1.1, 1.2, 1.3, 1.4, 1.5, 1.75, 2., 2.25, 2.5, 2.75, 3., 3.5, 4., 4.5, 5., 5.5, 6., 7., 8., 10., 12., 14., 16., 18., 20.};
  //Double_t etabinning[33] = {-0.8, -0.75, -0.7, -0.65, -0.6, -0.55, -0.5, -0.45, -0.4, -0.35, -0.3, -0.25, -0.2, -0.15, -0.1, 0.05, 0., 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5, 0.55, 0.6, 0.65, 0.7, 0.75, 0.8};
  Double_t etabinning[17] = {-0.8, -0.7, -0.6, -0.5, -0.4, -0.3, -0.2, -0.1, 0., 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8};
  /*const Int_t kPtBins2 = 45;
  const Double_t ptbinning2[kPtBins2 + 1] = {0., 0.1, 0.2, 0.3, 0.4,
                                             0.5, 0.6, 0.7, 0.8, 0.9,
                                             1., 1.1, 1.2, 1.3, 1.4,
                                             1.5, 1.7, 1.9, 2.1, 2.3,
                                             2.5, 2.75, 3., 3.25, 3.5,
                                             3.75, 4., 4.25, 4.5, 5.,
                                             5.5, 6., 7., 8., 9.,
                                             10., 11., 12., 13., 14.,
                                             15., 16., 17., 18. 19.,
                                             20.};
  Int_t nPtBins = IsBinning1 ? kPtBins1 : kPtBins2;
  const Double_t *ptbinning = IsBinning1 ? ptbinning1 : ptbinning2;*/
  AliHFEvarManager *vm = task->GetVarManager();
  vm->AddVariable("pt", 35, ptbinning1);
  vm->AddVariable("eta", 16, etabinning);
  vm->AddVariable("phi");
  vm->AddVariable("charge");
  vm->AddVariable("source");
  //vm->AddVariable("centrality");

  if(!useMC){
    // background model LHC10d pass2
    TF1 *hBackground = new TF1("hadronicBackgroundFunction_period_d", "exp([0]/x+[1])", 0., 20.);
    hBackground->SetParameter(0, -16.4);
    hBackground->SetParameter(1, -2.3);
    if (TPCcl>85 && TPCcl<125){
      hBackground->SetParameter(0, -39.0);
      hBackground->SetParameter(1, -0.35);
    } else if (TPCcl>125){
      hBackground->SetParameter(0, -1.41);
      hBackground->SetParameter(1, -2.44);
    }
    TObjArray *listPeriodD = new TObjArray(12);
    listPeriodD->AddAt(hBackground, 0);
    // background model LHC10e pass2
    hBackground = new TF1("hadronicBackgroundFunction_period_e", "exp([0]*x+[1])", 0., 20.);
    hBackground->SetParameter(0, 1.67);
    hBackground->SetParameter(1, -16.);
    if (TPCcl>85 && TPCcl<115){
      hBackground->SetParameter(0, 1.85);
      hBackground->SetParameter(1, -17.7);
    } else if (TPCcl>115){
      hBackground->SetParameter(0, 6.);
      hBackground->SetParameter(1, -21.);
    }
    TObjArray *listPeriodE = new TObjArray(12);
    listPeriodE->AddAt(hBackground, 0);
    AliOADBContainer *cbackground = new AliOADBContainer("cbackground");
    cbackground->AppendObject(listPeriodD, 122195, 126437);
    cbackground->AppendObject(listPeriodE, 127712, 130850);
    task->SetBackgroundFactorsFromOADB(cbackground);
  }

  // Define PID
  AliHFEpid *pid = task->GetPID();
  pid->AddDetector("TOF", 0);
  pid->AddDetector("TRD", 1);
  pid->AddDetector("TPC", 2);

  Double_t params[4];
  char *cutmodel;
  if(useMC){
      // Monte-Carlo needs modelling of the falling mean with momentum at low momentum
      // for high momentum it is consistent with a flat -0.94
      cutmodel = "[0]*TMath::Exp([1]*x) + [2] + [3]*x";
      Double_t paramsMC[4] = {0.7174, -1.588, -0.9395, 0.0246};
      for(int ipar = 0; ipar < 4; ipar++) params[ipar] = paramsMC[ipar];
  } else {
      // Data is consistent with a flat 0.12
      cutmodel = "pol0";
      params[0] = TPCs;
  }
  pid->ConfigureTOF(TOFs);
  pid->ConfigureTPCdefaultCut(cutmodel, params, TPCu);

  //task->GetPIDQAManager()->SetHighResolutionHistos();

  AliHFEpidTRD *trdpid = pid->GetDetPID(AliHFEpid::kTRDpid);
  trdpid->SetRenormalizeElPi();
  trdpid->SetElectronEfficiency(eeff[TRDeff]);   // efficiency
  trdpid->SetNTracklets(TRDtl);      // ntracklets threshold
  //trdpid->SetCutNTracklets(TRDtl, TRDexactTracklets);
  AliOADBContainer *cont = new AliOADBContainer("TRDthresholds");
  cont->InitFromFile(Form("%s/util/hfe/TRD.OADBThresholds.root", gSystem->Getenv("TRAIN_ROOT")),"TRDthresholds");
  trdpid->SetOADBThresholds(cont);
  if(TRDonFlyCut) trdpid->SelectCutOnTheFly(kTRUE);

  if(kAnalyseTaggedTracks){
    AliHFEcuts *v0trackCuts = new AliHFEcuts("V0trackCutsTRD2", "Track Cuts for tagged track Analysis");
    v0trackCuts->CreateStandardCuts();
    v0trackCuts->SetMinNClustersTPC(TPCcl);  
    v0trackCuts->SetMinRatioTPCclusters(0.6);
    v0trackCuts->SetTPCmodes(AliHFEextraCuts::kFound, AliHFEextraCuts::kFoundOverFindable);
    v0trackCuts->SetMinNClustersITS(1);
    v0trackCuts->SetCutITSpixel(AliHFEextraCuts::kAny);
    v0trackCuts->SetCheckITSLayerStatus(kFALSE);
    v0trackCuts->UnsetVertexRequirement();
    //hfecuts->SetSigmaToVertex(10);
    v0trackCuts->SetTOFPIDStep(kFALSE);
    v0trackCuts->SetQAOn();
    v0trackCuts->SetMinNTrackletsTRD(TRDtl);

    task->SwitchOnPlugin(AliAnalysisTaskHFE::kTaggedTrackAnalysis);
    task->SetTaggedTrackCuts(v0trackCuts);
    task->SetCleanTaggedTrack(kTRUE);
  }

  // QA
  printf("task %p\n", task);
  task->SetQAOn(AliAnalysisTaskHFE::kPIDqa);
  //task->SetQAOn(AliAnalysisTaskHFE::kMCqa);    
  //task->SwitchOnPlugin(AliAnalysisTaskHFE::kIsElecBackGround);
  //task->SwitchOnPlugin(AliAnalysisTaskHFE::kSecVtx);
  task->SwitchOnPlugin(AliAnalysisTaskHFE::kDEstep);

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