ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "Riostream.h"
#include "TString.h"
#include "TROOT.h"
#include "TSystem.h"

#include "AliOADBContainer.h"
#include "AliOADBMuonTrackCutsParam.h"
#endif

// Needed libraries:
// gSystem->Load("libANALYSIS.so");gSystem->Load("libOADB.so");gSystem->Load("libANALYSISalice.so");gSystem->Load("libCORRFW.so");gSystem->Load("libPWGmuon.so");

//________________________________________________________
AliOADBMuonTrackCutsParam* CreateOADBObject ( TString periodName, Double_t meanDcaX, Double_t meanDcaY, Double_t meanDcaZ, Double_t meanPCorr23, Double_t meanPCorr310, Double_t sigmaPdca23, Double_t sigmaPdca310, Double_t nSigmaPdca, Double_t chi2NormCut, Double_t relPResolution, Double_t slopeResolution, Double_t sharpPtApt, Double_t sharpPtLpt, Double_t sharpPtHpt )
{
  AliOADBMuonTrackCutsParam* oadbObj = new AliOADBMuonTrackCutsParam ( periodName.Data() );
  oadbObj->SetMeanDCA ( meanDcaX, meanDcaY, meanDcaZ );
  oadbObj->SetMeanPCorr ( meanPCorr23, meanPCorr310 );
  oadbObj->SetSigmaPdca ( sigmaPdca23, sigmaPdca310 );
  oadbObj->SetNSigmaPdca ( nSigmaPdca );
  oadbObj->SetChi2NormCut ( chi2NormCut );
  oadbObj->SetRelPResolution ( relPResolution );
  oadbObj->SetSlopeResolution ( slopeResolution );
  oadbObj->SetSharpPtCut ( sharpPtApt, sharpPtLpt, sharpPtHpt );

  return oadbObj;
}

//________________________________________________________
Bool_t HasDefault ( AliOADBContainer* container )
{
  return ( container->GetDefaultList()->GetEntries() > 0 );
}

//________________________________________________________
void AddParams ( AliOADBContainer* container, AliOADBMuonTrackCutsParam* oadbObj, Int_t firstRun, Int_t lastRun, TString passName, AliOADBContainer* defaultContainer = 0x0 )
{
  TString oadbObjName = oadbObj->GetName();
  if ( ! oadbObjName.Contains(passName.Data()) ) oadbObjName += "_" + passName;
  oadbObj->SetName(oadbObjName.Data());
  container->AppendObject ( oadbObj, firstRun, lastRun, passName );
  if ( ! defaultContainer ) return;
  defaultContainer->AppendObject ( oadbObj->Clone(), firstRun, lastRun );
}

enum {kData, kDataDef, kMC, kMCDef, kNcontainers};
AliOADBContainer* containers[kNcontainers] = {0x0};

//________________________________________________________
void FillDataAndMC ( AliOADBMuonTrackCutsParam* oadbObj, Int_t firstRun, Int_t lastRun, TString passName, Bool_t isDefault, Bool_t resetDCAforMC = kTRUE )
{
  AliOADBContainer* defContainer = ( isDefault ) ? containers[kDataDef] : 0x0;
  AddParams ( containers[kData], oadbObj, firstRun, lastRun, passName, defContainer );
  AliOADBMuonTrackCutsParam* oadbObjMC = static_cast<AliOADBMuonTrackCutsParam*>(oadbObj->Clone());
  if ( resetDCAforMC ) oadbObjMC->SetMeanDCA ( 0., 0., 0. );
  defContainer = ( isDefault ) ? containers[kMCDef] : 0x0;
  AddParams ( containers[kMC], oadbObjMC, firstRun, lastRun, passName, defContainer );
}

//________________________________________________________
void buildMuonTrackCutsOADB ( )
{
  Double_t defMeanPCorr23 = 2.*1.5;
  Double_t defMeanPCorr310 = 2.*1.2;
  Double_t defSigmaPdca23 = 99.;
  Double_t defSigmaPdca310 = 54.;
  Double_t defNSigmaPdca = 6.;
  Double_t defChi2NormCut = 1.e6;
  Double_t lut4 = 4.2;
  Double_t lut2 = 1.7;
  Double_t lut1 = 1.0;
  Double_t lut05 = 0.5;

  AliOADBMuonTrackCutsParam* oadbObj = 0x0;

  TString baseContName = "MuonTrackCutsParam";
  TString contNameSuffix[kNcontainers] = {"data","data_def","MC","MC_def"};


  for ( Int_t icont=0; icont<kNcontainers; icont++ ) {
    containers[icont] = new AliOADBContainer(Form("%s_%s",baseContName.Data(),contNameSuffix[icont].Data()));
    oadbObj = CreateOADBObject ( "default",
                                0., 0., 0.,
                                defMeanPCorr23, defMeanPCorr310,
                                defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                                defChi2NormCut,
                                5.e-4, 6.e-4,
                                0., lut1, lut4 );
    containers[icont]->AddDefaultObject(oadbObj);
  }



  oadbObj = CreateOADBObject ( "LHC12hi",
                              0.18943, -0.250591, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              80., defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              4.e-4, 5.e-4,
                              0., lut1, lut4 );
  FillDataAndMC ( oadbObj, 189576, 193341, "muon_calo_pass2", kTRUE );


  oadbObj = CreateOADBObject ( "LHC13def",
                              0.18943, -0.250591, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              80., defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              4.e-4, 5.e-4,
                              0., lut05, lut4 );
  FillDataAndMC ( oadbObj, 195682, 197388, "muon_pass2", kTRUE );


  oadbObj = CreateOADBObject ( "LHC13f",
                              0.18943, -0.250591, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              80., defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              4.e-4, 5.e-4,
                              0., lut05, lut4 );
  FillDataAndMC ( oadbObj, 196433, 197388, "muon_calo", kFALSE );


  oadbObj = CreateOADBObject ( "LHC11h_2",
                              -1.118002, -1.175119, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              5.e-4, 6.e-4,
                              0., lut1, lut4 );
  FillDataAndMC ( oadbObj, 167706, 170593, "pass2", kFALSE );


  oadbObj = CreateOADBObject ( "LHC11c3defgh",
                              0.296514, -0.229262, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              4.e-4, 5.e-4,
                              0., lut1, lut4 );
  FillDataAndMC ( oadbObj, 154726, 170593, "pass2_muon", kTRUE );


  oadbObj = CreateOADBObject ( "LHC11c2",
                              0.296514, -0.229262, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              4.e-4, 5.e-4,
                              0., lut1, lut2 );
  FillDataAndMC ( oadbObj, 153059, 154495, "pass2_muon", kTRUE );


  oadbObj = CreateOADBObject ( "LHC11c1",
                               0.296514, -0.229262, 0.,
                               defMeanPCorr23, defMeanPCorr310,
                               defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                               defChi2NormCut,
                               4.e-4, 5.e-4,
                               0., lut05, lut1 );
  FillDataAndMC ( oadbObj, 151661, 152935, "pass2_muon", kTRUE );


  oadbObj = CreateOADBObject ( "LHC11h",
                              -1.118002, -1.175119, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              5.e-4, 6.e-4,
                              0., lut1, lut4 );
  FillDataAndMC ( oadbObj, 167706, 170593, "pass1_muon", kFALSE );


  oadbObj = CreateOADBObject ( "LHC11def",
                              -1.146336, -1.130535, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              5.e-4, 6.e-4,
                              0., lut1, lut4 );
  FillDataAndMC ( oadbObj, 156620, 162717, "pass1", kFALSE );


  oadbObj = CreateOADBObject ( "LHC11a",
                              -1.146336, -1.130535, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              5.e-4, 6.e-4,
                              0., lut05, lut1 );
  FillDataAndMC ( oadbObj, 146688, 146860, "pass1", kTRUE );


  oadbObj = CreateOADBObject ( "LHC10h",
                              -0.4599, -0.9172, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                              3.5,
                              5.e-4, 6.e-4,
                              0., lut05, lut1 );
  FillDataAndMC ( oadbObj, 137135, 139513, "pass1", kTRUE );


  oadbObj = CreateOADBObject ( "LHC10pp",
                              -0.4599, -0.9172, 0.,
                              defMeanPCorr23, defMeanPCorr310,
                              defSigmaPdca23, defSigmaPdca310, defNSigmaPdca,
                              defChi2NormCut,
                              5.e-4, 6.e-4,
                              0., lut05, lut1 );
  FillDataAndMC ( oadbObj, 114783, 136376, "pass1", kTRUE );


  TString oadbFilename = "$ALICE_ROOT/OADB/PWG/MUON/MuonTrackCuts.root";
  if ( ! gSystem->AccessPathName(gSystem->ExpandPathName(oadbFilename.Data())) ) {
    gSystem->Exec(Form("rm %s", oadbFilename.Data()));
  }

  for ( Int_t icont=0; icont<kNcontainers; icont++ ) {
    containers[icont]
    ->WriteToFile ( oadbFilename.Data() );
  }
}
 buildMuonTrackCutsOADB.C:1
 buildMuonTrackCutsOADB.C:2
 buildMuonTrackCutsOADB.C:3
 buildMuonTrackCutsOADB.C:4
 buildMuonTrackCutsOADB.C:5
 buildMuonTrackCutsOADB.C:6
 buildMuonTrackCutsOADB.C:7
 buildMuonTrackCutsOADB.C:8
 buildMuonTrackCutsOADB.C:9
 buildMuonTrackCutsOADB.C:10
 buildMuonTrackCutsOADB.C:11
 buildMuonTrackCutsOADB.C:12
 buildMuonTrackCutsOADB.C:13
 buildMuonTrackCutsOADB.C:14
 buildMuonTrackCutsOADB.C:15
 buildMuonTrackCutsOADB.C:16
 buildMuonTrackCutsOADB.C:17
 buildMuonTrackCutsOADB.C:18
 buildMuonTrackCutsOADB.C:19
 buildMuonTrackCutsOADB.C:20
 buildMuonTrackCutsOADB.C:21
 buildMuonTrackCutsOADB.C:22
 buildMuonTrackCutsOADB.C:23
 buildMuonTrackCutsOADB.C:24
 buildMuonTrackCutsOADB.C:25
 buildMuonTrackCutsOADB.C:26
 buildMuonTrackCutsOADB.C:27
 buildMuonTrackCutsOADB.C:28
 buildMuonTrackCutsOADB.C:29
 buildMuonTrackCutsOADB.C:30
 buildMuonTrackCutsOADB.C:31
 buildMuonTrackCutsOADB.C:32
 buildMuonTrackCutsOADB.C:33
 buildMuonTrackCutsOADB.C:34
 buildMuonTrackCutsOADB.C:35
 buildMuonTrackCutsOADB.C:36
 buildMuonTrackCutsOADB.C:37
 buildMuonTrackCutsOADB.C:38
 buildMuonTrackCutsOADB.C:39
 buildMuonTrackCutsOADB.C:40
 buildMuonTrackCutsOADB.C:41
 buildMuonTrackCutsOADB.C:42
 buildMuonTrackCutsOADB.C:43
 buildMuonTrackCutsOADB.C:44
 buildMuonTrackCutsOADB.C:45
 buildMuonTrackCutsOADB.C:46
 buildMuonTrackCutsOADB.C:47
 buildMuonTrackCutsOADB.C:48
 buildMuonTrackCutsOADB.C:49
 buildMuonTrackCutsOADB.C:50
 buildMuonTrackCutsOADB.C:51
 buildMuonTrackCutsOADB.C:52
 buildMuonTrackCutsOADB.C:53
 buildMuonTrackCutsOADB.C:54
 buildMuonTrackCutsOADB.C:55
 buildMuonTrackCutsOADB.C:56
 buildMuonTrackCutsOADB.C:57
 buildMuonTrackCutsOADB.C:58
 buildMuonTrackCutsOADB.C:59
 buildMuonTrackCutsOADB.C:60
 buildMuonTrackCutsOADB.C:61
 buildMuonTrackCutsOADB.C:62
 buildMuonTrackCutsOADB.C:63
 buildMuonTrackCutsOADB.C:64
 buildMuonTrackCutsOADB.C:65
 buildMuonTrackCutsOADB.C:66
 buildMuonTrackCutsOADB.C:67
 buildMuonTrackCutsOADB.C:68
 buildMuonTrackCutsOADB.C:69
 buildMuonTrackCutsOADB.C:70
 buildMuonTrackCutsOADB.C:71
 buildMuonTrackCutsOADB.C:72
 buildMuonTrackCutsOADB.C:73
 buildMuonTrackCutsOADB.C:74
 buildMuonTrackCutsOADB.C:75
 buildMuonTrackCutsOADB.C:76
 buildMuonTrackCutsOADB.C:77
 buildMuonTrackCutsOADB.C:78
 buildMuonTrackCutsOADB.C:79
 buildMuonTrackCutsOADB.C:80
 buildMuonTrackCutsOADB.C:81
 buildMuonTrackCutsOADB.C:82
 buildMuonTrackCutsOADB.C:83
 buildMuonTrackCutsOADB.C:84
 buildMuonTrackCutsOADB.C:85
 buildMuonTrackCutsOADB.C:86
 buildMuonTrackCutsOADB.C:87
 buildMuonTrackCutsOADB.C:88
 buildMuonTrackCutsOADB.C:89
 buildMuonTrackCutsOADB.C:90
 buildMuonTrackCutsOADB.C:91
 buildMuonTrackCutsOADB.C:92
 buildMuonTrackCutsOADB.C:93
 buildMuonTrackCutsOADB.C:94
 buildMuonTrackCutsOADB.C:95
 buildMuonTrackCutsOADB.C:96
 buildMuonTrackCutsOADB.C:97
 buildMuonTrackCutsOADB.C:98
 buildMuonTrackCutsOADB.C:99
 buildMuonTrackCutsOADB.C:100
 buildMuonTrackCutsOADB.C:101
 buildMuonTrackCutsOADB.C:102
 buildMuonTrackCutsOADB.C:103
 buildMuonTrackCutsOADB.C:104
 buildMuonTrackCutsOADB.C:105
 buildMuonTrackCutsOADB.C:106
 buildMuonTrackCutsOADB.C:107
 buildMuonTrackCutsOADB.C:108
 buildMuonTrackCutsOADB.C:109
 buildMuonTrackCutsOADB.C:110
 buildMuonTrackCutsOADB.C:111
 buildMuonTrackCutsOADB.C:112
 buildMuonTrackCutsOADB.C:113
 buildMuonTrackCutsOADB.C:114
 buildMuonTrackCutsOADB.C:115
 buildMuonTrackCutsOADB.C:116
 buildMuonTrackCutsOADB.C:117
 buildMuonTrackCutsOADB.C:118
 buildMuonTrackCutsOADB.C:119
 buildMuonTrackCutsOADB.C:120
 buildMuonTrackCutsOADB.C:121
 buildMuonTrackCutsOADB.C:122
 buildMuonTrackCutsOADB.C:123
 buildMuonTrackCutsOADB.C:124
 buildMuonTrackCutsOADB.C:125
 buildMuonTrackCutsOADB.C:126
 buildMuonTrackCutsOADB.C:127
 buildMuonTrackCutsOADB.C:128
 buildMuonTrackCutsOADB.C:129
 buildMuonTrackCutsOADB.C:130
 buildMuonTrackCutsOADB.C:131
 buildMuonTrackCutsOADB.C:132
 buildMuonTrackCutsOADB.C:133
 buildMuonTrackCutsOADB.C:134
 buildMuonTrackCutsOADB.C:135
 buildMuonTrackCutsOADB.C:136
 buildMuonTrackCutsOADB.C:137
 buildMuonTrackCutsOADB.C:138
 buildMuonTrackCutsOADB.C:139
 buildMuonTrackCutsOADB.C:140
 buildMuonTrackCutsOADB.C:141
 buildMuonTrackCutsOADB.C:142
 buildMuonTrackCutsOADB.C:143
 buildMuonTrackCutsOADB.C:144
 buildMuonTrackCutsOADB.C:145
 buildMuonTrackCutsOADB.C:146
 buildMuonTrackCutsOADB.C:147
 buildMuonTrackCutsOADB.C:148
 buildMuonTrackCutsOADB.C:149
 buildMuonTrackCutsOADB.C:150
 buildMuonTrackCutsOADB.C:151
 buildMuonTrackCutsOADB.C:152
 buildMuonTrackCutsOADB.C:153
 buildMuonTrackCutsOADB.C:154
 buildMuonTrackCutsOADB.C:155
 buildMuonTrackCutsOADB.C:156
 buildMuonTrackCutsOADB.C:157
 buildMuonTrackCutsOADB.C:158
 buildMuonTrackCutsOADB.C:159
 buildMuonTrackCutsOADB.C:160
 buildMuonTrackCutsOADB.C:161
 buildMuonTrackCutsOADB.C:162
 buildMuonTrackCutsOADB.C:163
 buildMuonTrackCutsOADB.C:164
 buildMuonTrackCutsOADB.C:165
 buildMuonTrackCutsOADB.C:166
 buildMuonTrackCutsOADB.C:167
 buildMuonTrackCutsOADB.C:168
 buildMuonTrackCutsOADB.C:169
 buildMuonTrackCutsOADB.C:170
 buildMuonTrackCutsOADB.C:171
 buildMuonTrackCutsOADB.C:172
 buildMuonTrackCutsOADB.C:173
 buildMuonTrackCutsOADB.C:174
 buildMuonTrackCutsOADB.C:175
 buildMuonTrackCutsOADB.C:176
 buildMuonTrackCutsOADB.C:177
 buildMuonTrackCutsOADB.C:178
 buildMuonTrackCutsOADB.C:179
 buildMuonTrackCutsOADB.C:180
 buildMuonTrackCutsOADB.C:181
 buildMuonTrackCutsOADB.C:182
 buildMuonTrackCutsOADB.C:183
 buildMuonTrackCutsOADB.C:184
 buildMuonTrackCutsOADB.C:185
 buildMuonTrackCutsOADB.C:186
 buildMuonTrackCutsOADB.C:187
 buildMuonTrackCutsOADB.C:188
 buildMuonTrackCutsOADB.C:189
 buildMuonTrackCutsOADB.C:190
 buildMuonTrackCutsOADB.C:191
 buildMuonTrackCutsOADB.C:192
 buildMuonTrackCutsOADB.C:193
 buildMuonTrackCutsOADB.C:194
 buildMuonTrackCutsOADB.C:195
 buildMuonTrackCutsOADB.C:196
 buildMuonTrackCutsOADB.C:197
 buildMuonTrackCutsOADB.C:198
 buildMuonTrackCutsOADB.C:199
 buildMuonTrackCutsOADB.C:200
 buildMuonTrackCutsOADB.C:201
 buildMuonTrackCutsOADB.C:202
 buildMuonTrackCutsOADB.C:203
 buildMuonTrackCutsOADB.C:204
 buildMuonTrackCutsOADB.C:205
 buildMuonTrackCutsOADB.C:206
 buildMuonTrackCutsOADB.C:207
 buildMuonTrackCutsOADB.C:208
 buildMuonTrackCutsOADB.C:209
 buildMuonTrackCutsOADB.C:210
 buildMuonTrackCutsOADB.C:211
 buildMuonTrackCutsOADB.C:212
 buildMuonTrackCutsOADB.C:213
 buildMuonTrackCutsOADB.C:214
 buildMuonTrackCutsOADB.C:215
 buildMuonTrackCutsOADB.C:216
 buildMuonTrackCutsOADB.C:217
 buildMuonTrackCutsOADB.C:218
 buildMuonTrackCutsOADB.C:219
 buildMuonTrackCutsOADB.C:220
 buildMuonTrackCutsOADB.C:221
 buildMuonTrackCutsOADB.C:222
 buildMuonTrackCutsOADB.C:223
 buildMuonTrackCutsOADB.C:224
 buildMuonTrackCutsOADB.C:225