ROOT logo

void InitHistograms(AliDielectron *die, Int_t cutDefinition);
void InitCF(AliDielectron* die, Int_t cutDefinition);

void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition);
void SetupPairCuts(AliDielectron *die, Int_t cutDefinition);

TString names=("trackQ+Pt>1GeV+loose_PID;trackQ+Pt>1GeV+tight_PID;trackQ+Pt>.5GeV");
TObjArray *arrNames=names.Tokenize(";");

const Int_t nDie=arrNames->GetEntries();

AliDielectron* ConfigJpsi2ee(Int_t cutDefinition)
{
  //
  // Setup the instance of AliDielectron
  //
  
  // create the actual framework object
  TString name=Form("%02d",cutDefinition);
  if (cutDefinition<arrNames->GetEntriesFast()){
    name=arrNames->At(cutDefinition)->GetName();
  }
  AliDielectron *die =
    new AliDielectron(Form("%s",name.Data()),
                      Form("Track cuts: %s",name.Data()));
  
  // cut setup
  SetupTrackCuts(die,cutDefinition);
  SetupPairCuts(die,cutDefinition);
  
  //
  // histogram setup
  // only if an AliDielectronHistos object is attached to the
  //  dielectron framework the QA histograms will be filled
  //
  InitHistograms(die,cutDefinition);

  // the last definition uses no cuts and only the QA histograms should be filled!
  if (cutDefinition<nDie-1) InitCF(die,cutDefinition);
  
  return die;
}

//______________________________________________________________________________________
void SetupTrackCuts(AliDielectron *die, Int_t cutDefinition)
{
  //
  // Setup the track cuts
  //
  
  

  //QA no CF
  if (cutDefinition==nDie-1) {
    //Pt cut
    AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>.5","Pt>.5");
    pt->AddCut(AliDielectronVarManager::kPt,.5,1e30);
    die->GetTrackFilter().AddCuts(pt);
    
    return;
  }

  
  AliDielectronVarCuts *pt = new AliDielectronVarCuts("Pt>1","Pt>1");
  pt->AddCut(AliDielectronVarManager::kPt,1.,1e30);
  pt->AddCut(AliDielectronVarManager::kImpactParZ,-3.,3.);
  pt->AddCut(AliDielectronVarManager::kImpactParXY,-.07,.07);
  die->GetTrackFilter().AddCuts(pt);
  
  //loose PID
  if (cutDefinition==0){
    //ESD pid cuts (TPC nSigma Electrons)
    AliDielectronVarCuts *pid = new AliDielectronVarCuts("TPCpid","TPC nSigma cut |e|<3 pi>2 |P|>2 |K|>2");
    //include
    pid->AddCut(AliDielectronVarManager::kTPCnSigmaEle, -3., 3.);
    //exclude
    pid->AddCut(AliDielectronVarManager::kTPCnSigmaPio, -20., 2., kTRUE);
    pid->AddCut(AliDielectronVarManager::kTPCnSigmaPro, -2., 2., kTRUE);
    pid->AddCut(AliDielectronVarManager::kTPCnSigmaKao, -2., 2., kTRUE);
    die->GetTrackFilter().AddCuts(pid);
  }

  //tight PID
  if (cutDefinition==1){
    //ESD pid cuts (TPC nSigma Electrons)
    AliDielectronVarCuts *pid = new AliDielectronVarCuts("TPCpid","TPC nSigma cut |e|<2 pi>2 |P|>2 |K|>2; |dXY|<200um");
    //include
    pid->AddCut(AliDielectronVarManager::kTPCnSigmaEle, -2., 2.);
    //exclude
    pid->AddCut(AliDielectronVarManager::kTPCnSigmaPio, -2., 2., kTRUE);
    pid->AddCut(AliDielectronVarManager::kTPCnSigmaPro, -2., 2., kTRUE);
    pid->AddCut(AliDielectronVarManager::kTPCnSigmaKao, -2., 2., kTRUE);
    //tighten Impact parameter to 200um
    pid->AddCut(AliDielectronVarManager::kImpactParXY, -0.02, 0.02);
    die->GetTrackFilter().AddCuts(pid);
  }
  
}

//______________________________________________________________________________________
void SetupPairCuts(AliDielectron *die, Int_t cutDefinition)
{
  //
  // Setup the pair cuts
  //
  
  //Invariant mass and rapidity selection
  AliDielectronVarCuts *pairCut=new AliDielectronVarCuts("2<M<4+|Y|<.8","2<M<4 + |Y|<.8");
  pairCut->AddCut(AliDielectronVarManager::kM,2.,4.);
  pairCut->AddCut(AliDielectronVarManager::kY,-0.8,0.8);
}

//______________________________________________________________________________________
void InitHistograms(AliDielectron *die, Int_t cutDefinition)
{
  //
  // Initialise the QA histograms
  //

  //Setup QA histograms
  AliDielectronHistos *histos=
    new AliDielectronHistos(die->GetName(),
                            die->GetTitle());
  
  //Initialise histogram classes
  histos->SetReservedWords("Track;Pair");
  
  //Event class (only for last QA)
  if (cutDefinition==nDie-1) histos->AddClass("Event");
  
  //Track classes, only first event
  for (Int_t i=0; i<2; ++i){
    histos->AddClass(Form("Track_%s",AliDielectron::TrackClassName(i)));
  }
  
  //Pair classes, only first event
  for (Int_t i=0; i<3; ++i){
    histos->AddClass(Form("Pair_%s",AliDielectron::PairClassName(i)));
  }

  //Event histograms
  if (cutDefinition==nDie-1){
    //add histograms to event class
    histos->UserHistogram("Event","nEvents","Number of processed events after cuts;Number events",
                          1,0.,1.,AliDielectronVarManager::kNevents);
  }
  
  //add histograms to Track classes
  histos->UserHistogram("Track","Pt","Pt;Pt [GeV];#tracks",200,0,20.,AliDielectronVarManager::kPt);
  histos->UserHistogram("Track","dEdx_P","dEdx;P [GeV];TPC signal (arb units);#tracks",
                        400,0.2,20.,200,0.,200.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCsignal,kTRUE);
  histos->UserHistogram("Track","TPCnSigmaEle_P","TPC number of sigmas Electrons;P [GeV];TPC number of sigmas Electrons;#tracks",
                        400,0.2,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaEle,kTRUE);
  histos->UserHistogram("Track","TPCnSigmaPio_P","TPC number of sigmas Pions;P [GeV];TPC number of sigmas Pions;#tracks",
                        400,0.2,20.,100,-5.,5.,AliDielectronVarManager::kPIn,AliDielectronVarManager::kTPCnSigmaPio,kTRUE);
  histos->UserHistogram("Track","dXY","dXY;dXY [cm];#tracks",200,-2.,2.,AliDielectronVarManager::kImpactParXY);
  
  //add histograms to Pair classes
  histos->UserHistogram("Pair","InvMass","Inv.Mass;Inv. Mass [GeV];#pairs",
                        500,0.,4.,AliDielectronVarManager::kM);
  histos->UserHistogram("Pair","Rapidity","Rapidity;Rapidity;#pairs",
                        100,-2.,2.,AliDielectronVarManager::kY);
  histos->UserHistogram("Pair","OpeningAngle","Opening angle;angle",
                        100,0.,3.15,AliDielectronVarManager::kOpeningAngle);
  histos->UserHistogram("Pair","Chi2/NDF","#Chi^{2}/NDF;#Chi^{2}/NDF",
                        100, 0., 20., AliDielectronVarManager::kChi2NDF);
  
  die->SetHistogramManager(histos);
}


void InitCF(AliDielectron* die, Int_t cutDefinition)
{
  //
  // Setupd the CF Manager if needed
  //
  AliDielectronCF *cf=new AliDielectronCF(die->GetName(),die->GetTitle());
  
  //pair variables
  cf->AddVariable(AliDielectronVarManager::kPt,20,0,10);
  cf->AddVariable(AliDielectronVarManager::kY,40,-2,2);
  cf->AddVariable(AliDielectronVarManager::kM,200,-0.01,3.99);
  cf->AddVariable(AliDielectronVarManager::kPairType,10,0,10);
  //leg variables
  cf->AddVariable(AliDielectronVarManager::kPt,20,0,10,kTRUE);
  
  //only in this case write MC truth info
  cf->SetStepsForCutsIncreasing();
  if (cutDefinition==0){
    cf->SetStepForMCtruth();
  }
  
  die->SetCFManagerPair(cf);
}
 ConfigJpsi2eeDataAOD.C:1
 ConfigJpsi2eeDataAOD.C:2
 ConfigJpsi2eeDataAOD.C:3
 ConfigJpsi2eeDataAOD.C:4
 ConfigJpsi2eeDataAOD.C:5
 ConfigJpsi2eeDataAOD.C:6
 ConfigJpsi2eeDataAOD.C:7
 ConfigJpsi2eeDataAOD.C:8
 ConfigJpsi2eeDataAOD.C:9
 ConfigJpsi2eeDataAOD.C:10
 ConfigJpsi2eeDataAOD.C:11
 ConfigJpsi2eeDataAOD.C:12
 ConfigJpsi2eeDataAOD.C:13
 ConfigJpsi2eeDataAOD.C:14
 ConfigJpsi2eeDataAOD.C:15
 ConfigJpsi2eeDataAOD.C:16
 ConfigJpsi2eeDataAOD.C:17
 ConfigJpsi2eeDataAOD.C:18
 ConfigJpsi2eeDataAOD.C:19
 ConfigJpsi2eeDataAOD.C:20
 ConfigJpsi2eeDataAOD.C:21
 ConfigJpsi2eeDataAOD.C:22
 ConfigJpsi2eeDataAOD.C:23
 ConfigJpsi2eeDataAOD.C:24
 ConfigJpsi2eeDataAOD.C:25
 ConfigJpsi2eeDataAOD.C:26
 ConfigJpsi2eeDataAOD.C:27
 ConfigJpsi2eeDataAOD.C:28
 ConfigJpsi2eeDataAOD.C:29
 ConfigJpsi2eeDataAOD.C:30
 ConfigJpsi2eeDataAOD.C:31
 ConfigJpsi2eeDataAOD.C:32
 ConfigJpsi2eeDataAOD.C:33
 ConfigJpsi2eeDataAOD.C:34
 ConfigJpsi2eeDataAOD.C:35
 ConfigJpsi2eeDataAOD.C:36
 ConfigJpsi2eeDataAOD.C:37
 ConfigJpsi2eeDataAOD.C:38
 ConfigJpsi2eeDataAOD.C:39
 ConfigJpsi2eeDataAOD.C:40
 ConfigJpsi2eeDataAOD.C:41
 ConfigJpsi2eeDataAOD.C:42
 ConfigJpsi2eeDataAOD.C:43
 ConfigJpsi2eeDataAOD.C:44
 ConfigJpsi2eeDataAOD.C:45
 ConfigJpsi2eeDataAOD.C:46
 ConfigJpsi2eeDataAOD.C:47
 ConfigJpsi2eeDataAOD.C:48
 ConfigJpsi2eeDataAOD.C:49
 ConfigJpsi2eeDataAOD.C:50
 ConfigJpsi2eeDataAOD.C:51
 ConfigJpsi2eeDataAOD.C:52
 ConfigJpsi2eeDataAOD.C:53
 ConfigJpsi2eeDataAOD.C:54
 ConfigJpsi2eeDataAOD.C:55
 ConfigJpsi2eeDataAOD.C:56
 ConfigJpsi2eeDataAOD.C:57
 ConfigJpsi2eeDataAOD.C:58
 ConfigJpsi2eeDataAOD.C:59
 ConfigJpsi2eeDataAOD.C:60
 ConfigJpsi2eeDataAOD.C:61
 ConfigJpsi2eeDataAOD.C:62
 ConfigJpsi2eeDataAOD.C:63
 ConfigJpsi2eeDataAOD.C:64
 ConfigJpsi2eeDataAOD.C:65
 ConfigJpsi2eeDataAOD.C:66
 ConfigJpsi2eeDataAOD.C:67
 ConfigJpsi2eeDataAOD.C:68
 ConfigJpsi2eeDataAOD.C:69
 ConfigJpsi2eeDataAOD.C:70
 ConfigJpsi2eeDataAOD.C:71
 ConfigJpsi2eeDataAOD.C:72
 ConfigJpsi2eeDataAOD.C:73
 ConfigJpsi2eeDataAOD.C:74
 ConfigJpsi2eeDataAOD.C:75
 ConfigJpsi2eeDataAOD.C:76
 ConfigJpsi2eeDataAOD.C:77
 ConfigJpsi2eeDataAOD.C:78
 ConfigJpsi2eeDataAOD.C:79
 ConfigJpsi2eeDataAOD.C:80
 ConfigJpsi2eeDataAOD.C:81
 ConfigJpsi2eeDataAOD.C:82
 ConfigJpsi2eeDataAOD.C:83
 ConfigJpsi2eeDataAOD.C:84
 ConfigJpsi2eeDataAOD.C:85
 ConfigJpsi2eeDataAOD.C:86
 ConfigJpsi2eeDataAOD.C:87
 ConfigJpsi2eeDataAOD.C:88
 ConfigJpsi2eeDataAOD.C:89
 ConfigJpsi2eeDataAOD.C:90
 ConfigJpsi2eeDataAOD.C:91
 ConfigJpsi2eeDataAOD.C:92
 ConfigJpsi2eeDataAOD.C:93
 ConfigJpsi2eeDataAOD.C:94
 ConfigJpsi2eeDataAOD.C:95
 ConfigJpsi2eeDataAOD.C:96
 ConfigJpsi2eeDataAOD.C:97
 ConfigJpsi2eeDataAOD.C:98
 ConfigJpsi2eeDataAOD.C:99
 ConfigJpsi2eeDataAOD.C:100
 ConfigJpsi2eeDataAOD.C:101
 ConfigJpsi2eeDataAOD.C:102
 ConfigJpsi2eeDataAOD.C:103
 ConfigJpsi2eeDataAOD.C:104
 ConfigJpsi2eeDataAOD.C:105
 ConfigJpsi2eeDataAOD.C:106
 ConfigJpsi2eeDataAOD.C:107
 ConfigJpsi2eeDataAOD.C:108
 ConfigJpsi2eeDataAOD.C:109
 ConfigJpsi2eeDataAOD.C:110
 ConfigJpsi2eeDataAOD.C:111
 ConfigJpsi2eeDataAOD.C:112
 ConfigJpsi2eeDataAOD.C:113
 ConfigJpsi2eeDataAOD.C:114
 ConfigJpsi2eeDataAOD.C:115
 ConfigJpsi2eeDataAOD.C:116
 ConfigJpsi2eeDataAOD.C:117
 ConfigJpsi2eeDataAOD.C:118
 ConfigJpsi2eeDataAOD.C:119
 ConfigJpsi2eeDataAOD.C:120
 ConfigJpsi2eeDataAOD.C:121
 ConfigJpsi2eeDataAOD.C:122
 ConfigJpsi2eeDataAOD.C:123
 ConfigJpsi2eeDataAOD.C:124
 ConfigJpsi2eeDataAOD.C:125
 ConfigJpsi2eeDataAOD.C:126
 ConfigJpsi2eeDataAOD.C:127
 ConfigJpsi2eeDataAOD.C:128
 ConfigJpsi2eeDataAOD.C:129
 ConfigJpsi2eeDataAOD.C:130
 ConfigJpsi2eeDataAOD.C:131
 ConfigJpsi2eeDataAOD.C:132
 ConfigJpsi2eeDataAOD.C:133
 ConfigJpsi2eeDataAOD.C:134
 ConfigJpsi2eeDataAOD.C:135
 ConfigJpsi2eeDataAOD.C:136
 ConfigJpsi2eeDataAOD.C:137
 ConfigJpsi2eeDataAOD.C:138
 ConfigJpsi2eeDataAOD.C:139
 ConfigJpsi2eeDataAOD.C:140
 ConfigJpsi2eeDataAOD.C:141
 ConfigJpsi2eeDataAOD.C:142
 ConfigJpsi2eeDataAOD.C:143
 ConfigJpsi2eeDataAOD.C:144
 ConfigJpsi2eeDataAOD.C:145
 ConfigJpsi2eeDataAOD.C:146
 ConfigJpsi2eeDataAOD.C:147
 ConfigJpsi2eeDataAOD.C:148
 ConfigJpsi2eeDataAOD.C:149
 ConfigJpsi2eeDataAOD.C:150
 ConfigJpsi2eeDataAOD.C:151
 ConfigJpsi2eeDataAOD.C:152
 ConfigJpsi2eeDataAOD.C:153
 ConfigJpsi2eeDataAOD.C:154
 ConfigJpsi2eeDataAOD.C:155
 ConfigJpsi2eeDataAOD.C:156
 ConfigJpsi2eeDataAOD.C:157
 ConfigJpsi2eeDataAOD.C:158
 ConfigJpsi2eeDataAOD.C:159
 ConfigJpsi2eeDataAOD.C:160
 ConfigJpsi2eeDataAOD.C:161
 ConfigJpsi2eeDataAOD.C:162
 ConfigJpsi2eeDataAOD.C:163
 ConfigJpsi2eeDataAOD.C:164
 ConfigJpsi2eeDataAOD.C:165
 ConfigJpsi2eeDataAOD.C:166
 ConfigJpsi2eeDataAOD.C:167
 ConfigJpsi2eeDataAOD.C:168
 ConfigJpsi2eeDataAOD.C:169
 ConfigJpsi2eeDataAOD.C:170
 ConfigJpsi2eeDataAOD.C:171
 ConfigJpsi2eeDataAOD.C:172
 ConfigJpsi2eeDataAOD.C:173
 ConfigJpsi2eeDataAOD.C:174
 ConfigJpsi2eeDataAOD.C:175
 ConfigJpsi2eeDataAOD.C:176
 ConfigJpsi2eeDataAOD.C:177
 ConfigJpsi2eeDataAOD.C:178
 ConfigJpsi2eeDataAOD.C:179
 ConfigJpsi2eeDataAOD.C:180
 ConfigJpsi2eeDataAOD.C:181
 ConfigJpsi2eeDataAOD.C:182
 ConfigJpsi2eeDataAOD.C:183
 ConfigJpsi2eeDataAOD.C:184
 ConfigJpsi2eeDataAOD.C:185
 ConfigJpsi2eeDataAOD.C:186
 ConfigJpsi2eeDataAOD.C:187
 ConfigJpsi2eeDataAOD.C:188
 ConfigJpsi2eeDataAOD.C:189
 ConfigJpsi2eeDataAOD.C:190
 ConfigJpsi2eeDataAOD.C:191
 ConfigJpsi2eeDataAOD.C:192
 ConfigJpsi2eeDataAOD.C:193
 ConfigJpsi2eeDataAOD.C:194
 ConfigJpsi2eeDataAOD.C:195
 ConfigJpsi2eeDataAOD.C:196