]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updated macros for lego train and train manager (mvala)
authorfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Nov 2012 14:07:03 +0000 (14:07 +0000)
committerfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 15 Nov 2012 14:07:03 +0000 (14:07 +0000)
14 files changed:
PWGLF/RESONANCES/AliRsnMiniAnalysisTask.cxx
PWGLF/RESONANCES/AliRsnMiniValue.cxx
PWGLF/RESONANCES/AliRsnTrainManager.cxx
PWGLF/RESONANCES/AliRsnTrainManager.h
PWGLF/RESONANCES/macros/lego_train/AddAMRsn.C
PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsKStarNsigma_Syst.C
PWGLF/RESONANCES/macros/lego_train/AddRsnDaughterCutsPhiNsigma.C
PWGLF/RESONANCES/macros/lego_train/AddRsnPairsPhi.C
PWGLF/RESONANCES/macros/lego_train/AddRsnTask.C
PWGLF/RESONANCES/macros/lego_train/AddRsnTaskTrain.C
PWGLF/RESONANCES/macros/lego_train/RsnConfig.C
PWGLF/RESONANCES/macros/lego_train/RsnQualityCut.C
PWGLF/RESONANCES/macros/lego_train/RsnTrainCommonSettings.C
PWGLF/RESONANCES/macros/lego_train/RsnTrainSettingsExtra.C [new file with mode: 0644]

index 7985705dc0635cf012e32829a0b13c2af7e58c82..7f8c28194af297c15f3e9b236f61fb54bd7940d9 100644 (file)
@@ -900,6 +900,7 @@ void AliRsnMiniAnalysisTask::FillTrueMotherESD(AliRsnMiniEvent *miniEvent)
       if (!def->IsMother()) continue;
       for (ip = 0; ip < npart; ip++) {
          AliMCParticle *part = (AliMCParticle *)fMCEvent->GetTrack(ip);
+        //get mother pdg code
          if (part->Particle()->GetPdgCode() != def->GetMotherPDG()) continue;
          // check that daughters match expected species
          if (part->Particle()->GetNDaughters() < 2) continue;
index 823323513553526200d1f5ea8b1b392f50f818b0..20d23981f7e5dd8fd573fdda1cd8c94f702e9c29 100644 (file)
@@ -144,8 +144,7 @@ Float_t AliRsnMiniValue::Eval(AliRsnMiniPair *pair, AliRsnMiniEvent *event)
          return event->Angle();
       case kLeadingPt:
          return 0.0;
-         // ---- pair values --------------------------------------------------------------------------
-      case kPt:
+      case kPt:        
          return pair->Pt(fUseMCInfo);
       case kInvMass:
          return pair->InvMass(fUseMCInfo);
index 936c35f1979340aa89a232b7ef950217096f9e67..696e066b83f3f3f142588305833b5c7c23ea48a9 100644 (file)
@@ -20,179 +20,179 @@ AliRsnTrainManager *AliRsnTrainManager::fgRsnTrainManager = 0;
 
 //__________________________________________________________________________________________________
 AliRsnTrainManager::AliRsnTrainManager(const char *name,const char *title) : TNamed(name,title),
-               fGlobals(0)
+   fGlobals(0)
 {
-       //
-       // Default constructor
-       //
+   //
+   // Default constructor
+   //
 
-       fgRsnTrainManager = this;
+   fgRsnTrainManager = this;
 
-       if (TClass::IsCallingNew() != TClass::kDummyNew) {
-            fGlobals    = new TMap();
-          }
+   if (TClass::IsCallingNew() != TClass::kDummyNew) {
+      fGlobals    = new TMap();
+   }
 
 }
 
 //__________________________________________________________________________________________________
 AliRsnTrainManager::AliRsnTrainManager(const AliRsnTrainManager &copy) : TNamed(copy),
-               fGlobals(copy.fGlobals)
+   fGlobals(copy.fGlobals)
 {
-       //
-       // Copy constructor
-       //
+   //
+   // Copy constructor
+   //
 }
 
 //__________________________________________________________________________________________________
 AliRsnTrainManager &AliRsnTrainManager::operator=(const AliRsnTrainManager &copy)
 {
-       //
-       // Assignment constructor
-       //
-       TNamed::operator=(copy);
-       if (this == &copy)
-               return *this;
-
-       fGlobals = copy.fGlobals;
-       return (*this);
+   //
+   // Assignment constructor
+   //
+   TNamed::operator=(copy);
+   if (this == &copy)
+      return *this;
+
+   fGlobals = copy.fGlobals;
+   return (*this);
 }
 
 //__________________________________________________________________________________________________
 AliRsnTrainManager::~AliRsnTrainManager()
 {
-       //
-       // Destructor
-       //
-       delete fGlobals;
-       fgRsnTrainManager = 0;
+   //
+   // Destructor
+   //
+   delete fGlobals;
+   fgRsnTrainManager = 0;
 }
 
 //______________________________________________________________________________
-void AliRsnTrainManager::SetGlobalStr(const char *key, const char *value)
+void AliRsnTrainManager::SetGlobalStr(const char *key, const char *value,Bool_t verbose)
 {
-       // Define a custom string variable mapped to a global unique name. The variable
-       // can be then retrieved by a given analysis macro via GetGlobalStr(key).
-       AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
-       if (!mgr) {
-               ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined");
-               return;
-       }
-       Bool_t valid = kFALSE;
-       TString existing = AliRsnTrainManager::GetGlobalStr(key, valid);
-       if (valid) {
-               ::Error("AliRsnTrainManager::SetGlobalStr", "Global %s = %s already defined.", key, existing.Data());
-               return;
-       }
-       mgr->GetGlobals()->Add(new TObjString(key), new TObjString(value));
+   // Define a custom string variable mapped to a global unique name. The variable
+   // can be then retrieved by a given analysis macro via GetGlobalStr(key).
+   AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
+   if (!mgr) {
+      ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined");
+      return;
+   }
+   Bool_t valid = kFALSE;
+   TString existing = AliRsnTrainManager::GetGlobalStr(key, valid);
+   if (valid) {
+      if (verbose) ::Error("AliRsnTrainManager::SetGlobalStr", "Global %s = %s already defined.", key, existing.Data());
+      return;
+   }
+   mgr->GetGlobals()->Add(new TObjString(key), new TObjString(value));
 }
 
 //______________________________________________________________________________
 const char *AliRsnTrainManager::GetGlobalStr(const char *key, Bool_t &valid)
 {
-       // Static method to retrieve a global variable defined via SetGlobalStr.
-       valid = kFALSE;
-       AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
-       if (!mgr) return 0;
-       TObject *value = mgr->GetGlobals()->GetValue(key);
-       if (!value) return 0;
-       valid = kTRUE;
-       return value->GetName();
+   // Static method to retrieve a global variable defined via SetGlobalStr.
+   valid = kFALSE;
+   AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
+   if (!mgr) return 0;
+   TObject *value = mgr->GetGlobals()->GetValue(key);
+   if (!value) return 0;
+   valid = kTRUE;
+   return value->GetName();
 }
 
 //______________________________________________________________________________
-void AliRsnTrainManager::SetGlobalInt(const char *key, Int_t value)
+void AliRsnTrainManager::SetGlobalInt(const char *key, Int_t value,Bool_t verbose)
 {
-       // Define a custom integer variable mapped to a global unique name. The variable
-       // can be then retrieved by a given analysis macro via GetGlobalInt(key).
-       AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
-       if (!mgr) {
-               ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined");
-               return;
-       }
-       Bool_t valid = kFALSE;
-       Int_t existing = AliRsnTrainManager::GetGlobalInt(key, valid);
-       if (valid) {
-               ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %i already defined.", key, existing);
-               return;
-       }
-       mgr->GetGlobals()->Add(new TObjString(key), new TObjString(TString::Format("%i",value)));
+   // Define a custom integer variable mapped to a global unique name. The variable
+   // can be then retrieved by a given analysis macro via GetGlobalInt(key).
+   AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
+   if (!mgr) {
+      ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined");
+      return;
+   }
+   Bool_t valid = kFALSE;
+   Int_t existing = AliRsnTrainManager::GetGlobalInt(key, valid);
+   if (valid) {
+      if (verbose) ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %i already defined.", key, existing);
+      return;
+   }
+   mgr->GetGlobals()->Add(new TObjString(key), new TObjString(TString::Format("%i",value)));
 }
 
 //______________________________________________________________________________
 Int_t AliRsnTrainManager::GetGlobalInt(const char *key, Bool_t &valid)
 {
-       // Static method to retrieve a global variable defined via SetGlobalInt.
-       valid = kFALSE;
-       AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
-       if (!mgr) return 0;
-       TObject *value = mgr->GetGlobals()->GetValue(key);
-       if (!value) return 0;
-       valid = kTRUE;
-       TString s = value->GetName();
-       return s.Atoi();
+   // Static method to retrieve a global variable defined via SetGlobalInt.
+   valid = kFALSE;
+   AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
+   if (!mgr) return 0;
+   TObject *value = mgr->GetGlobals()->GetValue(key);
+   if (!value) return 0;
+   valid = kTRUE;
+   TString s = value->GetName();
+   return s.Atoi();
 }
 
 //______________________________________________________________________________
-void AliRsnTrainManager::SetGlobalDbl(const char *key, Double_t value)
+void AliRsnTrainManager::SetGlobalDbl(const char *key, Double_t value,Bool_t verbose)
 {
-       // Define a custom double precision variable mapped to a global unique name. The variable
-       // can be then retrieved by a given analysis macro via GetGlobalInt(key).
-       AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
-       if (!mgr) {
-               ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined");
-               return;
-       }
-       Bool_t valid = kFALSE;
-       Double_t existing = AliRsnTrainManager::GetGlobalDbl(key, valid);
-       if (valid) {
-               ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %g already defined.", key, existing);
-               return;
-       }
-       mgr->GetGlobals()->Add(new TObjString(key), new TObjString(TString::Format("%f",value)));
+   // Define a custom double precision variable mapped to a global unique name. The variable
+   // can be then retrieved by a given analysis macro via GetGlobalInt(key).
+   AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
+   if (!mgr) {
+      ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined");
+      return;
+   }
+   Bool_t valid = kFALSE;
+   Double_t existing = AliRsnTrainManager::GetGlobalDbl(key, valid);
+   if (valid) {
+      if (verbose) ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %g already defined.", key, existing);
+      return;
+   }
+   mgr->GetGlobals()->Add(new TObjString(key), new TObjString(TString::Format("%f",value)));
 }
 
 //______________________________________________________________________________
 Double_t AliRsnTrainManager::GetGlobalDbl(const char *key, Bool_t &valid)
 {
-       // Static method to retrieve a global variable defined via SetGlobalDbl.
-       valid = kFALSE;
-       AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
-       if (!mgr) return 0;
-       TObject *value = mgr->GetGlobals()->GetValue(key);
-       if (!value) return 0;
-       valid = kTRUE;
-       TString s = value->GetName();
-       return s.Atof();
+   // Static method to retrieve a global variable defined via SetGlobalDbl.
+   valid = kFALSE;
+   AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
+   if (!mgr) return 0;
+   TObject *value = mgr->GetGlobals()->GetValue(key);
+   if (!value) return 0;
+   valid = kTRUE;
+   TString s = value->GetName();
+   return s.Atof();
 }
 
 //______________________________________________________________________________
-void AliRsnTrainManager::SetGlobalObj(const char *key, TObject *value)
+void AliRsnTrainManager::SetGlobalObj(const char *key, TObject *value,Bool_t verbose)
 {
-       // Define a custom double precision variable mapped to a global unique name. The variable
-       // can be then retrieved by a given analysis macro via GetGlobalInt(key).
-       AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
-       if (!mgr) {
-               ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined");
-               return;
-       }
-       Bool_t valid = kFALSE;
-       TObject *existing = AliRsnTrainManager::GetGlobalObj(key, valid);
-       if (valid) {
-               ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %p already defined.", key, existing);
-               return;
-       }
-       mgr->GetGlobals()->Add(new TObjString(key), value->Clone());
+   // Define a custom double precision variable mapped to a global unique name. The variable
+   // can be then retrieved by a given analysis macro via GetGlobalInt(key).
+   AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
+   if (!mgr) {
+      ::Error("AliRsnTrainManager::SetGlobalStr", "No analysis manager defined");
+      return;
+   }
+   Bool_t valid = kFALSE;
+   TObject *existing = AliRsnTrainManager::GetGlobalObj(key, valid);
+   if (valid) {
+      if (verbose) ::Error("AliRsnTrainManager::SetGlobalInt", "Global %s = %p already defined.", key, existing);
+      return;
+   }
+   mgr->GetGlobals()->Add(new TObjString(key), value->Clone());
 }
 
 //______________________________________________________________________________
 TObject *AliRsnTrainManager::GetGlobalObj(const char *key, Bool_t &valid)
 {
-       // Static method to retrieve a global variable defined via SetGlobalDbl.
-       valid = kFALSE;
-       AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
-       if (!mgr) return 0;
-       TObject *value = mgr->GetGlobals()->GetValue(key);
-       return value;
+   // Static method to retrieve a global variable defined via SetGlobalDbl.
+   valid = kFALSE;
+   AliRsnTrainManager *mgr = AliRsnTrainManager::GetRsnTrainManager();
+   if (!mgr) return 0;
+   TObject *value = mgr->GetGlobals()->GetValue(key);
+   return value;
 }
 
 //______________________________________________________________________________
@@ -200,44 +200,44 @@ void AliRsnTrainManager::Print(Option_t */*option*/) const {
 
 
 
-       if (!fGlobals) return;
-       Printf("=========================================================");
-
-       Printf("            Rsn Global variables: \n");
-       TIter next(fGlobals->GetTable());
-       TPair *a;
-       TObjString *str;
-       while ((a = (TPair *)next())) {
-               str = 0;
-//             if (a->Key()&& a->Key()->IsOnHeap()){
-//             }
-               if (a->Value() && a->Value()->IsOnHeap()){
-                       str = dynamic_cast<TObjString *>(a->Value());
-               }
-               if (str) {
-                       if (str) Printf("  %20s = %-20s",a->Key()->GetName(),str->GetString().Data());
-               }
-       }
-       Printf("\n=========================================================");
-
-/*     Printf("            Rsn Particles and Cuts \n");
-
-
-       next.Reset();
-//     AliRsnCut
-       while ((a = (TPair *)next())) {
-               str = 0;
-//             if (a->Key()&& a->Key()->IsOnHeap()){
-//             }
-               if (a->Value() && a->Value()->IsOnHeap()){
-                       str = dynamic_cast<TObjString *>(a->Value());
-               }
-               if (str) {
-                       if (str) Printf("  %20s = %-20s",a->Key()->GetName(),str->GetString().Data());
-               }
-       }
-
-       Printf("\n=========================================================");
-       
-*/
+   if (!fGlobals) return;
+   Printf("=========================================================");
+
+   Printf("            Rsn Global variables: \n");
+   TIter next(fGlobals->GetTable());
+   TPair *a;
+   TObjString *str;
+   while ((a = (TPair *)next())) {
+      str = 0;
+//    if (a->Key()&& a->Key()->IsOnHeap()){
+//    }
+      if (a->Value() && a->Value()->IsOnHeap()) {
+         str = dynamic_cast<TObjString *>(a->Value());
+      }
+      if (str) {
+         if (str) Printf("  %20s = %-20s",a->Key()->GetName(),str->GetString().Data());
+      }
+   }
+   Printf("\n=========================================================");
+
+   /* Printf("            Rsn Particles and Cuts \n");
+
+
+      next.Reset();
+   // AliRsnCut
+      while ((a = (TPair *)next())) {
+         str = 0;
+   //    if (a->Key()&& a->Key()->IsOnHeap()){
+   //    }
+         if (a->Value() && a->Value()->IsOnHeap()){
+            str = dynamic_cast<TObjString *>(a->Value());
+         }
+         if (str) {
+            if (str) Printf("  %20s = %-20s",a->Key()->GetName(),str->GetString().Data());
+         }
+      }
+
+      Printf("\n=========================================================");
+
+   */
 }
index 776de12b37f97a764c371db259f4e0d386703dfc..2b22d6f15dc36b879a879546f402488551e29135 100644 (file)
@@ -21,10 +21,10 @@ public:
    AliRsnTrainManager &operator=(const AliRsnTrainManager &copy);
    virtual ~AliRsnTrainManager();
 
-   static void         SetGlobalStr(const char *key, const char *value);
-   static void         SetGlobalInt(const char *key, Int_t value);
-   static void         SetGlobalDbl(const char *key, Double_t value);
-   static void         SetGlobalObj(const char *key, TObject *value);
+   static void         SetGlobalStr(const char *key, const char *value,Bool_t verbose=kTRUE);
+   static void         SetGlobalInt(const char *key, Int_t value,Bool_t verbose=kTRUE);
+   static void         SetGlobalDbl(const char *key, Double_t value,Bool_t verbose=kTRUE);
+   static void         SetGlobalObj(const char *key, TObject *value,Bool_t verbose=kTRUE);
 
    static const char  *GetGlobalStr(const char *key, Bool_t &valid);
    static Int_t        GetGlobalInt(const char *key, Bool_t &valid);
index 5550c4269e09486ec8e6e8d40b75488637c12d1a..8a869d19d3ae57fbcbb5743397e250fe0979209e 100644 (file)
@@ -152,7 +152,7 @@ Bool_t AddAMRsn(TString analysisSource = "proof", TString analysisMode = "test",
    rsnBaseSettings.Append("_MINI");
 
    if (!RsnLoadMacro("AddRsnTaskTrain.C")) return kFALSE;
-   AddRsnTaskTrain(rsnBaseSettings,rsnStr.Data(),rsnCutStr.Data());
+   AddRsnTaskTrain(rsnBaseSettings,rsnStr.Data(),rsnCutStr.Data(),"","","");
 
    return kTRUE;
 }
index ae8c19dc87ee8d9432c2cdaace8fe797cf6d3852..a9c6b0635034dcc788801ca932dafbcc4dcee9a6 100644 (file)
@@ -7,8 +7,11 @@ Int_t AddRsnDaughterCutsKStarNsigma_Syst(AliPID::EParticleType type1,AliPID::EPa
    if (!rsnIH) return 0;
 
    Bool_t valid = kTRUE;
+   Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
+   Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
    Int_t isPP = AliAnalysisManager::GetGlobalInt("rsnIsPP",valid);
    Int_t useCommonQualityCut = AliAnalysisManager::GetGlobalInt("rsnCommonQualityCut",valid);
+   Int_t isMixing = AliRsnTrainManager::GetGlobalInt("IsMixing",valid);
 
    Bool_t usePPCut = kFALSE;
 
@@ -31,23 +34,25 @@ Int_t AddRsnDaughterCutsKStarNsigma_Syst(AliPID::EParticleType type1,AliPID::EPa
    Double_t nSigmaTOF_Pi=3.0;
    Double_t nSigmaTOF_K=3.0;
    Double_t etaRange=0.8;
-   
+
    //Use single track Pt Cuts
    Double_t trackPtMin = 0.15;
    Double_t trackPtMax = 1.e20;
    Bool_t useTrackPtCut = kTRUE;
-   
-   if(opt.Contains("minPt20")) trackPtMin=0.2;
-   if(opt.Contains("minPt30")) trackPtMin=0.3;
-   if(opt.Contains("minPt40")) trackPtMin=0.4;
-   if(opt.Contains("minPt50")) trackPtMin=0.5;
-   if(opt.Contains("minPt60")) trackPtMin=0.6;
+
+   if(opt.Contains("minPt02")) trackPtMin=0.2;
+   if(opt.Contains("minPt03")) trackPtMin=0.3;
+   if(opt.Contains("minPt04")) trackPtMin=0.4;
+   if(opt.Contains("minPt05")) trackPtMin=0.5;
+   if(opt.Contains("minPt06")) trackPtMin=0.6;
+   if(opt.Contains("minPt10")) trackPtMin=1.0;
+   if(opt.Contains("minPt15")) trackPtMin=1.5;
 
 
    //Use min TPC cluster Cut
    Int_t minclsK,maxclsK;
    Int_t minclsPi,maxclsPi;
-   
+
    Bool_t useTPC_Pi=kFALSE;
    Bool_t useTOF_Pi=kFALSE;
    Bool_t useTPC_K=kFALSE;
@@ -115,16 +120,16 @@ Int_t AddRsnDaughterCutsKStarNsigma_Syst(AliPID::EParticleType type1,AliPID::EPa
 
    AliRsnCutTrackQuality *qualityCutK = new AliRsnCutTrackQuality("cutQuatityK");
    if (useCommonQualityCut>=0) {
-     qualityCutK->SetAODTestFilterBit(useCommonQualityCut);
-    
+      qualityCutK->SetAODTestFilterBit(useCommonQualityCut);
+
    } else {
-     qualityCutK->SetDefaults2010();
-     
+      qualityCutK->SetDefaults2010();
+
    }
 
    //No filter bit
    if(opt.Contains("NOfb")) qualityCutK->SetAODTestFilterBit(-1);
-   
+
    cutsK->AddCut(qualityCutK);
    if (!scheme.IsNull()) scheme += "&";
    scheme += qualityCutK->GetName();
@@ -161,97 +166,99 @@ Int_t AddRsnDaughterCutsKStarNsigma_Syst(AliPID::EParticleType type1,AliPID::EPa
       scheme += cutPDGK->GetName();
    }
 
-   
+
 
    //MinPt cut kaon
    if (useTrackPtCut) {
-     Printf("Adding Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax);
-     AliRsnValueDaughter *valTrackPtK = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kPt);
-     
-     AliRsnCutValue *cutTrackPtK = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type2),opt.Data()),trackPtMin,trackPtMax);
-     cutTrackPtK->SetTargetType(AliRsnTarget::kDaughter);
-     cutTrackPtK->SetValueObj(valTrackPtK);
-     cutsK->AddCut(cutTrackPtK);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += cutTrackPtK->GetName();
+      Printf("Adding Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax);
+      AliRsnValueDaughter *valTrackPtK = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kPt);
+
+      AliRsnCutValue *cutTrackPtK = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type2),opt.Data()),trackPtMin,trackPtMax);
+      cutTrackPtK->SetTargetType(AliRsnTarget::kDaughter);
+      cutTrackPtK->SetValueObj(valTrackPtK);
+      cutsK->AddCut(cutTrackPtK);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutTrackPtK->GetName();
    }
 
    //Ncluster cut kaon
-   if(opt.Contains("tpcncl80K")){
-     Printf("***** adding 80 TPCNCL cut Kaon");
-     AliRsnValueDaughter* val_tpcnclK = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
-     AliRsnCutValue* cut_tpcnclK = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),80,10000);
-     cut_tpcnclK->SetTargetType(AliRsnTarget::kDaughter);
-     cut_tpcnclK->SetValueObj(val_tpcnclK);
-     cutsK->AddCut(cut_tpcnclK);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += cut_tpcnclK->GetName();
+   if(opt.Contains("tpcncl80K")) {
+      Printf("***** adding 80 TPCNCL cut Kaon");
+      AliRsnValueDaughter *val_tpcnclK = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
+      AliRsnCutValue *cut_tpcnclK = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),80,10000);
+      cut_tpcnclK->SetTargetType(AliRsnTarget::kDaughter);
+      cut_tpcnclK->SetValueObj(val_tpcnclK);
+      cutsK->AddCut(cut_tpcnclK);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cut_tpcnclK->GetName();
    }
 
if(opt.Contains("tpcncl90K")){
-     Printf("***** adding 90 TPCNCL cut Kaon");
-     AliRsnValueDaughter* val_tpcnclK = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
-     AliRsnCutValue* cut_tpcnclK = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),90,10000);
-     cut_tpcnclK->SetTargetType(AliRsnTarget::kDaughter);
-     cut_tpcnclK->SetValueObj(val_tpcnclK);
-     cutsK->AddCut(cut_tpcnclK);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += cut_tpcnclK->GetName();
  if(opt.Contains("tpcncl90K")) {
+      Printf("***** adding 90 TPCNCL cut Kaon");
+      AliRsnValueDaughter *val_tpcnclK = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
+      AliRsnCutValue *cut_tpcnclK = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),90,10000);
+      cut_tpcnclK->SetTargetType(AliRsnTarget::kDaughter);
+      cut_tpcnclK->SetValueObj(val_tpcnclK);
+      cutsK->AddCut(cut_tpcnclK);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cut_tpcnclK->GetName();
    }
 
-   if(opt.Contains("tpcncl100K")){
-     Printf("***** adding 100 TPCNCL cut Kaon");
-     AliRsnValueDaughter* val_tpcnclK = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
-     AliRsnCutValue* cut_tpcnclK = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),100,10000);
-     cut_tpcnclK->SetTargetType(AliRsnTarget::kDaughter);
-     cut_tpcnclK->SetValueObj(val_tpcnclK);
-     cutsK->AddCut(cut_tpcnclK);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += cut_tpcnclK->GetName();
+   if(opt.Contains("tpcncl100K")) {
+      Printf("***** adding 100 TPCNCL cut Kaon");
+      AliRsnValueDaughter *val_tpcnclK = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
+      AliRsnCutValue *cut_tpcnclK = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type2),opt.Data()),100,10000);
+      cut_tpcnclK->SetTargetType(AliRsnTarget::kDaughter);
+      cut_tpcnclK->SetValueObj(val_tpcnclK);
+      cutsK->AddCut(cut_tpcnclK);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cut_tpcnclK->GetName();
    }
 
 
    //Ncluster cut kaon through AliRsnCutTrackQuality
-   if(opt.Contains("QTPCnclK")){
-     AliRsnCutTrackQuality *QTPCNclsCutK = new AliRsnCutTrackQuality("QTPCnclK");
-     QTPCNclsCutK->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
-     QTPCNclsCutK->SetAODTestFilterBit(5);//reset the filter bit cut
-     QTPCNclsCutK->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually, not just the filter bit
-     QTPCNclsCutK->SetPtRange(0.15,1.e20);//reset the pT cut
-     QTPCNclsCutK->SetEtaRange(-0.8,0.8);//reset the eta cut
-     
-     if(opt.Contains("nclK70")) minclsK=70;
-     if(opt.Contains("nclK80")) minclsK=80;
-     if(opt.Contains("nclK90")) minclsK=90;
-     if(opt.Contains("nclK100")) minclsK=100;
-     
-     Printf(Form("++++++++ Adding Cut: NclustersTPC Kaon >= %d",minclsK));
-     QTPCNclsCutK->SetTPCminNClusters(minclsK);
-
-     cutsK->AddCut(QTPCNclsCutK);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += QTPCNclsCutK->GetName();
-   }  
-   
+   if(opt.Contains("QTPCnclK")) {
+      AliRsnCutTrackQuality *QTPCNclsCutK = new AliRsnCutTrackQuality("QTPCnclK");
+      QTPCNclsCutK->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
+      QTPCNclsCutK->SetAODTestFilterBit(5);//reset the filter bit cut
+      QTPCNclsCutK->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually, not just the filter bit
+      QTPCNclsCutK->SetPtRange(0.15,1.e20);//reset the pT cut
+      QTPCNclsCutK->SetEtaRange(-0.8,0.8);//reset the eta cut
+
+      if(opt.Contains("nclK70")) minclsK=70;
+      if(opt.Contains("nclK75")) minclsK=75;
+      if(opt.Contains("nclK80")) minclsK=80;
+      if(opt.Contains("nclK85")) minclsK=85;
+      if(opt.Contains("nclK90")) minclsK=90;
+      if(opt.Contains("nclK100")) minclsK=100;
+
+      Printf(Form("++++++++ Adding Cut: NclustersTPC Kaon >= %d",minclsK));
+      QTPCNclsCutK->SetTPCminNClusters(minclsK);
+
+      cutsK->AddCut(QTPCNclsCutK);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += QTPCNclsCutK->GetName();
+   }
+
 
    //pt dep dcaxy cut on kaon
-   if(opt.Contains("PtDCAK")){
-     AliRsnCutTrackQuality *dcaxyCutK = new AliRsnCutTrackQuality("ptdcaK");
-     dcaxyCutK->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
-     dcaxyCutK->SetAODTestFilterBit(5);//reset the filter bit cut
-     dcaxyCutK->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually, not just the filter bit
-     dcaxyCutK->SetPtRange(0.15,1.e20);//reset the pT cut
-     dcaxyCutK->SetEtaRange(-0.8,0.8);//reset the eta cut
-     if(opt.Contains("DCAK7s")){dcaxyCutK->SetDCARPtFormula("0.0182+0.0350/pt^1.01");}
-     if(opt.Contains("DCAK6s")){dcaxyCutK->SetDCARPtFormula("0.0156+0.03/pt^1.01");}
-     if(opt.Contains("DCAK5s")){dcaxyCutK->SetDCARPtFormula("0.013+0.025/pt^1.01");}
-     if(opt.Contains("DCAK4s")){dcaxyCutK->SetDCARPtFormula("0.0104+0.02/pt^1.01");}
-     if(opt.Contains("DCAK3s")){dcaxyCutK->SetDCARPtFormula("0.0078+0.015/pt^1.01");}
-     if(opt.Contains("DCAK2s")){dcaxyCutK->SetDCARPtFormula("0.0052+0.01/pt^1.01");}
-     if(opt.Contains("DCAK1s")){dcaxyCutK->SetDCARPtFormula("0.0026+0.005/pt^1.01");}    
-     cutsK->AddCut(dcaxyCutK);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += dcaxyCutK->GetName();
+   if(opt.Contains("PtDCAK")) {
+      AliRsnCutTrackQuality *dcaxyCutK = new AliRsnCutTrackQuality("ptdcaK");
+      dcaxyCutK->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
+      dcaxyCutK->SetAODTestFilterBit(5);//reset the filter bit cut
+      dcaxyCutK->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually, not just the filter bit
+      dcaxyCutK->SetPtRange(0.15,1.e20);//reset the pT cut
+      dcaxyCutK->SetEtaRange(-0.8,0.8);//reset the eta cut
+      if(opt.Contains("DCAK7s")) {dcaxyCutK->SetDCARPtFormula("0.0182+0.0350/pt^1.01");}
+      if(opt.Contains("DCAK6s")) {dcaxyCutK->SetDCARPtFormula("0.0156+0.03/pt^1.01");}
+      if(opt.Contains("DCAK5s")) {dcaxyCutK->SetDCARPtFormula("0.013+0.025/pt^1.01");}
+      if(opt.Contains("DCAK4s")) {dcaxyCutK->SetDCARPtFormula("0.0104+0.02/pt^1.01");}
+      if(opt.Contains("DCAK3s")) {dcaxyCutK->SetDCARPtFormula("0.0078+0.015/pt^1.01");}
+      if(opt.Contains("DCAK2s")) {dcaxyCutK->SetDCARPtFormula("0.0052+0.01/pt^1.01");}
+      if(opt.Contains("DCAK1s")) {dcaxyCutK->SetDCARPtFormula("0.0026+0.005/pt^1.01");}
+      cutsK->AddCut(dcaxyCutK);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += dcaxyCutK->GetName();
    }
 
    Printf ("CUT Scheme for KAON is '%s'",scheme.Data());
@@ -269,13 +276,13 @@ Int_t AddRsnDaughterCutsKStarNsigma_Syst(AliPID::EParticleType type1,AliPID::EPa
    AliRsnCutTrackQuality *qualityCutPi = new AliRsnCutTrackQuality("cutQuatityPi");
    if (useCommonQualityCut>=0) {
       qualityCutPi->SetAODTestFilterBit(useCommonQualityCut);
-      
+
    } else {
-     qualityCutPi->SetDefaults2010();
+      qualityCutPi->SetDefaults2010();
    }
    //No filter bit
    if(opt.Contains("NOfb")) qualityCutPi->SetAODTestFilterBit(-1);
-   
+
    cutsP->AddCut(qualityCutPi);
    if (!scheme.IsNull()) scheme += "&";
    scheme += qualityCutPi->GetName();
@@ -311,93 +318,95 @@ Int_t AddRsnDaughterCutsKStarNsigma_Syst(AliPID::EParticleType type1,AliPID::EPa
 
    //MinPt cut pion
    if (useTrackPtCut) {
-     Printf("Adding Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax);
-     AliRsnValueDaughter *valTrackPtP = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kPt);
-
-     AliRsnCutValue *cutTrackPtP = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),trackPtMin,trackPtMax);
-     cutTrackPtP->SetTargetType(AliRsnTarget::kDaughter);
-     cutTrackPtP->SetValueObj(valTrackPtP);
-     cutsP->AddCut(cutTrackPtP);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += cutTrackPtP->GetName();
+      Printf("Adding Pt min=%.3f max=%.3f ...",trackPtMin,trackPtMax);
+      AliRsnValueDaughter *valTrackPtP = new AliRsnValueDaughter(Form("val%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kPt);
+
+      AliRsnCutValue *cutTrackPtP = new AliRsnCutValue(Form("cut%sTrackPt%s",AliPID::ParticleName(type1),opt.Data()),trackPtMin,trackPtMax);
+      cutTrackPtP->SetTargetType(AliRsnTarget::kDaughter);
+      cutTrackPtP->SetValueObj(valTrackPtP);
+      cutsP->AddCut(cutTrackPtP);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutTrackPtP->GetName();
    }
 
    //Ncluster cut pion
-   if(opt.Contains("tpcncl80Pi")){
-     Printf("***** adding 80 TPCNCL cut Pion");
-     AliRsnValueDaughter* val_tpcnclP = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
-     AliRsnCutValue* cut_tpcnclP = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),80,10000);
-     cut_tpcnclP->SetTargetType(AliRsnTarget::kDaughter);
-     cut_tpcnclP->SetValueObj(val_tpcnclP);
-     cutsP->AddCut(cut_tpcnclP);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += cut_tpcnclP->GetName();
+   if(opt.Contains("tpcncl80Pi")) {
+      Printf("***** adding 80 TPCNCL cut Pion");
+      AliRsnValueDaughter *val_tpcnclP = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
+      AliRsnCutValue *cut_tpcnclP = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),80,10000);
+      cut_tpcnclP->SetTargetType(AliRsnTarget::kDaughter);
+      cut_tpcnclP->SetValueObj(val_tpcnclP);
+      cutsP->AddCut(cut_tpcnclP);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cut_tpcnclP->GetName();
    }
 
-   if(opt.Contains("tpcncl90Pi")){
-     Printf("***** adding 90 TPCNCL cut Pion");
-     AliRsnValueDaughter* val_tpcnclP = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
-     AliRsnCutValue* cut_tpcnclP = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),90,10000);
-     cut_tpcnclP->SetTargetType(AliRsnTarget::kDaughter);
-     cut_tpcnclP->SetValueObj(val_tpcnclP);
-     cutsP->AddCut(cut_tpcnclP);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += cut_tpcnclP->GetName();
+   if(opt.Contains("tpcncl90Pi")) {
+      Printf("***** adding 90 TPCNCL cut Pion");
+      AliRsnValueDaughter *val_tpcnclP = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
+      AliRsnCutValue *cut_tpcnclP = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),90,10000);
+      cut_tpcnclP->SetTargetType(AliRsnTarget::kDaughter);
+      cut_tpcnclP->SetValueObj(val_tpcnclP);
+      cutsP->AddCut(cut_tpcnclP);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cut_tpcnclP->GetName();
    }
 
 
-   if(opt.Contains("tpcncl100Pi")){
-     Printf("***** adding 100 TPCNCL cut Pion");
-     AliRsnValueDaughter* val_tpcnclP = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
-     AliRsnCutValue* cut_tpcnclP = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),100,10000);
-     cut_tpcnclP->SetTargetType(AliRsnTarget::kDaughter);
-     cut_tpcnclP->SetValueObj(val_tpcnclP);
-     cutsP->AddCut(cut_tpcnclP);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += cut_tpcnclP->GetName();
+   if(opt.Contains("tpcncl100Pi")) {
+      Printf("***** adding 100 TPCNCL cut Pion");
+      AliRsnValueDaughter *val_tpcnclP = new AliRsnValueDaughter(Form("val%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
+      AliRsnCutValue *cut_tpcnclP = new AliRsnCutValue(Form("cut%s_tpcncl_%s",AliPID::ParticleName(type1),opt.Data()),100,10000);
+      cut_tpcnclP->SetTargetType(AliRsnTarget::kDaughter);
+      cut_tpcnclP->SetValueObj(val_tpcnclP);
+      cutsP->AddCut(cut_tpcnclP);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cut_tpcnclP->GetName();
    }
 
    //Ncluster cut on pion through AliRsnCutTrackQuality
-   if(opt.Contains("QTPCnclPi")){
-     AliRsnCutTrackQuality *QTPCNclsCutPi = new AliRsnCutTrackQuality("QTPCnclPi");
-     QTPCNclsCutPi->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
-     QTPCNclsCutPi->SetAODTestFilterBit(5);//reset the filter bit cut
-     QTPCNclsCutPi->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually, not just the filter bit
-     QTPCNclsCutPi->SetPtRange(0.15,1.e20);//reset the pT cut
-     QTPCNclsCutPi->SetEtaRange(-0.8,0.8);//reset the eta cut
-     
-     if(opt.Contains("nclPi70")) minclsPi=70;
-     if(opt.Contains("nclPi80")) minclsPi=80;
-     if(opt.Contains("nclPi90")) minclsPi=90;
-     if(opt.Contains("nclPi100")) minclsPi=100;
-     
-     Printf(Form("+++++++++ Adding Cut: NclustersTPC Pion >= %d",minclsPi));
-     QTPCNclsCutPi->SetTPCminNClusters(minclsPi);
-
-     cutsP->AddCut(QTPCNclsCutPi);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += QTPCNclsCutPi->GetName();
-
-   }  
+   if(opt.Contains("QTPCnclPi")) {
+      AliRsnCutTrackQuality *QTPCNclsCutPi = new AliRsnCutTrackQuality("QTPCnclPi");
+      QTPCNclsCutPi->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
+      QTPCNclsCutPi->SetAODTestFilterBit(5);//reset the filter bit cut
+      QTPCNclsCutPi->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually, not just the filter bit
+      QTPCNclsCutPi->SetPtRange(0.15,1.e20);//reset the pT cut
+      QTPCNclsCutPi->SetEtaRange(-0.8,0.8);//reset the eta cut
+
+      if(opt.Contains("nclPi70")) minclsPi=70;
+      if(opt.Contains("nclPi75")) minclsPi=75;
+      if(opt.Contains("nclPi80")) minclsPi=80;
+      if(opt.Contains("nclPi85")) minclsPi=85;
+      if(opt.Contains("nclPi90")) minclsPi=90;
+      if(opt.Contains("nclPi100")) minclsPi=100;
+
+      Printf(Form("+++++++++ Adding Cut: NclustersTPC Pion >= %d",minclsPi));
+      QTPCNclsCutPi->SetTPCminNClusters(minclsPi);
+
+      cutsP->AddCut(QTPCNclsCutPi);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += QTPCNclsCutPi->GetName();
+
+   }
 
    //pt dep dcaxy cut pion
-   if(opt.Contains("PtDCAP")){
-     AliRsnCutTrackQuality *dcaxyCutP = new AliRsnCutTrackQuality("ptdcaP6s");
-     dcaxyCutP->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
-     dcaxyCutP->SetAODTestFilterBit(5);//reset the filter bit cut
-     dcaxyCutP->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually, not just the filter bit
-     dcaxyCutP->SetPtRange(0.15,1.e20);//reset the pT cut
-     dcaxyCutP->SetEtaRange(-0.8,0.8);//reset the eta cut
-     if(opt.Contains("DCAP7s")){dcaxyCutP->SetDCARPtFormula("0.0182+0.0350/pt^1.01");}
-     if(opt.Contains("DCAP6s")){dcaxyCutP->SetDCARPtFormula("0.0156+0.03/pt^1.01");}
-     if(opt.Contains("DCAP5s")){dcaxyCutP->SetDCARPtFormula("0.013+0.025/pt^1.01");}
-     if(opt.Contains("DCAP4s")){dcaxyCutP->SetDCARPtFormula("0.0104+0.02/pt^1.01");}
-     if(opt.Contains("DCAP3s")){dcaxyCutP->SetDCARPtFormula("0.0078+0.015/pt^1.01");}
-     if(opt.Contains("DCAP2s")){dcaxyCutP->SetDCARPtFormula("0.0052+0.01/pt^1.01");}
-     if(opt.Contains("DCAP1s")){dcaxyCutP->SetDCARPtFormula("0.0026+0.005/pt^1.01");}   
-     cutsP->AddCut(dcaxyCutP);
-     if (!scheme.IsNull()) scheme += "&";
-     scheme += dcaxyCutP->GetName();
+   if(opt.Contains("PtDCAP")) {
+      AliRsnCutTrackQuality *dcaxyCutP = new AliRsnCutTrackQuality("ptdcaP6s");
+      dcaxyCutP->DisableAll();//disable all cuts, filter bit, pT, eta, and DCAxy cuts will be reset later
+      dcaxyCutP->SetAODTestFilterBit(5);//reset the filter bit cut
+      dcaxyCutP->SetCheckOnlyFilterBit(kFALSE);//tells the cut object to check all other cuts individually, not just the filter bit
+      dcaxyCutP->SetPtRange(0.15,1.e20);//reset the pT cut
+      dcaxyCutP->SetEtaRange(-0.8,0.8);//reset the eta cut
+      if(opt.Contains("DCAP7s")) {dcaxyCutP->SetDCARPtFormula("0.0182+0.0350/pt^1.01");}
+      if(opt.Contains("DCAP6s")) {dcaxyCutP->SetDCARPtFormula("0.0156+0.03/pt^1.01");}
+      if(opt.Contains("DCAP5s")) {dcaxyCutP->SetDCARPtFormula("0.013+0.025/pt^1.01");}
+      if(opt.Contains("DCAP4s")) {dcaxyCutP->SetDCARPtFormula("0.0104+0.02/pt^1.01");}
+      if(opt.Contains("DCAP3s")) {dcaxyCutP->SetDCARPtFormula("0.0078+0.015/pt^1.01");}
+      if(opt.Contains("DCAP2s")) {dcaxyCutP->SetDCARPtFormula("0.0052+0.01/pt^1.01");}
+      if(opt.Contains("DCAP1s")) {dcaxyCutP->SetDCARPtFormula("0.0026+0.005/pt^1.01");}
+      cutsP->AddCut(dcaxyCutP);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += dcaxyCutP->GetName();
    }
 
    Printf ("CUT Scheme for PION is '%s'",scheme.Data());
index 9fd1f4d855028f37ada59ab3ecf69a58b9848ae8..a0315198f5cf035c6bd3116972ceb9524854fe67 100644 (file)
@@ -31,6 +31,8 @@ Int_t AddRsnDaughterCutsPhiNsigma(AliPID::EParticleType type1,AliPID::EParticleT
    Double_t etaRange=0.8;
    Double_t trackPtMin=0.;
    Double_t trackPtMax=1.e10;
+   Int_t NclTPC=70;
+   Char_t DCAxyFormula[100]="0.0182+0.035/pt^1.01";
 
    Bool_t useTPC_K=kFALSE;
    Bool_t useTOF_K=kFALSE;
@@ -54,13 +56,13 @@ Int_t AddRsnDaughterCutsPhiNsigma(AliPID::EParticleType type1,AliPID::EParticleT
    if (opt.Contains("KTPCnsig20")) nSigmaTPC = 2.0;
    if (opt.Contains("KTPCnsig25")) nSigmaTPC = 2.5;
    if (opt.Contains("KTPCnsig30")) nSigmaTPC = 3.0;
+   if (opt.Contains("KTPCnsig1000")) nSigmaTPD = 100.0;
 
    if (opt.Contains("KTOFnsig10")) nSigmaTOF = 1.0;
    if (opt.Contains("KTOFnsig15")) nSigmaTOF = 1.5;
    if (opt.Contains("KTOFnsig20")) nSigmaTOF = 2.0;
    if (opt.Contains("KTOFnsig25")) nSigmaTOF = 2.5;
    if (opt.Contains("KTOFnsig30")) nSigmaTOF = 3.0;
-
    if (opt.Contains("KTOFnsig1000")) nSigmaTOF = 100.0;
 
    if (opt.Contains("trackPt")) {
@@ -68,6 +70,7 @@ Int_t AddRsnDaughterCutsPhiNsigma(AliPID::EParticleType type1,AliPID::EParticleT
       if (opt.Contains("trackPtMin015")) trackPtMin = 0.15;
       if (opt.Contains("trackPtMin02")) trackPtMin = 0.2;
       if (opt.Contains("trackPtMin05")) trackPtMin = 0.5;
+      if (opt.Contains("trackPtMin06")) trackPtMin = 0.6;
 
       if (opt.Contains("trackPtMax18")) trackPtMax = 1.8;
       if (opt.Contains("trackPtMax20")) trackPtMax = 2.0;
@@ -90,6 +93,24 @@ Int_t AddRsnDaughterCutsPhiNsigma(AliPID::EParticleType type1,AliPID::EParticleT
       useEta = kTRUE;
    }
 
+   Bool_t useNclTPC = kFALSE;
+   if (opt.Contains("NclTPC")) {
+      if (opt.Contains("NclTPC70")) NclTPC=70;
+      if (opt.Contains("NclTPC75")) NclTPC=75;
+      if (opt.Contains("NclTPC80")) NclTPC=80;
+      if (opt.Contains("NclTPC85")) NclTPC=85;
+      if (opt.Contains("NclTPC90")) NclTPC=90;
+      useNclTPC = kTRUE;
+   }
+
+   Bool_t useDCAxy = kFALSE;
+   if (opt.Contains("DCAxy")) {
+      if (opt.Contains("DCAxyFormula7s")) sprintf(DCAxyFormula,"0.0182+0.035/pt^1.01");
+      if (opt.Contains("DCAxyFormula6s")) sprintf(DCAxyFormula,"0.0156+0.03/pt^1.01");
+      if (opt.Contains("DCAxyFormula5s")) sprintf(DCAxyFormula,"0.013+0.025/pt^1.01");
+      useDCAxy = kTRUE;
+   }
+
 //---------------------------------------------
 //  Combine cuts
 //---------------------------------------------
@@ -102,12 +123,15 @@ Int_t AddRsnDaughterCutsPhiNsigma(AliPID::EParticleType type1,AliPID::EParticleT
    AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQualityK");
    if (!rsnQualityCut.IsNull()) {
       AliESDtrackCuts *esdTK = RsnQualityCut(rsnQualityCut.Data());
+      if(useDCAxy) esdTK->SetMaxDCAToVertexXYPtDep(DCAxyFormula);
       qualityCut->SetESDtrackCuts(esdTK);
    } else {
       if (useCommonQualityCut>=0) {
          qualityCut->SetAODTestFilterBit(useCommonQualityCut);
+         if(useDCAxy) {qualityCut->SetCheckOnlyFilterBit(kFALSE); qualityCut->SetDCARPtFormula(DCAxyFormula);}
       } else {
          qualityCut->SetDefaults2010();
+         if(useDCAxy) qualityCut->SetDCARPtFormula(DCAxyFormula);
       }
    }
 
@@ -155,6 +179,17 @@ Int_t AddRsnDaughterCutsPhiNsigma(AliPID::EParticleType type1,AliPID::EParticleT
       scheme += cutTrackPt->GetName();
    }
 
+   if (useNclTPC) {
+      Printf("Adding NclTPC >= %i",NclTPC);
+      AliRsnValueDaughter *valNclTPC = new AliRsnValueDaughter(Form("val%sNclTPC%s",AliPID::ParticleName(type1),opt.Data()),AliRsnValueDaughter::kNTPCclusters);
+      AliRsnCutValue *cutNclTPC = new AliRsnCutValue(Form("cut%sNclTPC%s",AliPID::ParticleName(type1),opt.Data()),NclTPC-0.1,1000.);
+      cutNclTPC->SetTargetType(AliRsnTarget::kDaughter);
+      cutNclTPC->SetValueObj(valNclTPC);
+      cuts->AddCut(cutNclTPC);
+      if (!scheme.IsNull()) scheme += "&";
+      scheme += cutNclTPC->GetName();
+   }
+
    if (usePDG) {
       Printf("Adding PDG ...");
       AliRsnCutPID *cutPDG = new AliRsnCutPID(Form("cut%sPDG%s",AliPID::ParticleName(type1),opt.Data()),type1,0.0,kTRUE);
index e87263aa9fff41ce432097a6ce6ddcecf0c812e1..dbc92104d0833572e6e63792cbab92a122e74970 100644 (file)
@@ -15,6 +15,7 @@ void AddRsnPairsPhi(AliAnalysisTaskSE *task,
                     AliRsnCutSet *cutsEvent=0,
                     AliRsnCutSet *cutsPair=0,
                     TString suffix = "") {
+   cerr<<"***** AddRsnPairsPhi"<<endl;
 
    Printf("id1=%d id2=%d",listID1,listID2);
 
@@ -125,13 +126,13 @@ void AddPairOutputMiniPhi(AliAnalysisTaskSE *task, Bool_t isMC,Bool_t isMixing,
    TString outputType = "HIST";
    if (isFullOutput) outputType = "SPARSE";
 
-   Int_t nIM   = 300; Double_t minIM   = 0.9, maxIM =  1.2;
+   Int_t nIM   = 215; Double_t minIM   = 0.985, maxIM =  1.2;
 //    Int_t nEta   = 400; Double_t minEta   = -2.0, maxEta =  2.0;
    Int_t nEta   = 400; Double_t minEta   = -0.5, maxEta =  0.5;
-   Int_t nY   = 10; Double_t minY   = -0.5, maxY =  0.5;
+   Int_t nY   = 1; Double_t minY   = -0.5, maxY =  0.5;
 //   Int_t nIM   = 1000; Double_t minIM   = 0.9, maxIM =  1.9;
    Int_t nPt   = 120; Double_t minPt   = 0.0, maxPt = 12.0;
-   Int_t nCent = 100; Double_t minCent = 0.0, maxCent = 100.0;
+   Int_t nCent = 20; Double_t minCent = 0.0, maxCent = 100.0;
    Int_t nRes  = 200; Double_t maxRes  = 0.01;
 
    // retrieve mass from PDG database
index 8a4dbd16f3c530727549a8feddf610609372e969..2cf58742c1efaeaad107015dbd0968a8e165b0e1 100644 (file)
@@ -18,6 +18,9 @@ AliAnalysisTaskSE *AddRsnTask(TString rsnPart,TString rsnCut,TString postfix="")
    Int_t useMC = AliRsnTrainManager::GetGlobalInt("IsMC",valid);
    Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
    Int_t physSelBit = AliRsnTrainManager::GetGlobalInt("RsnPhysSelFilterBit",valid);
+   Int_t isMixing = AliRsnTrainManager::GetGlobalInt("IsMixing",valid);
+   Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
+   Int_t isAOD049 = AliRsnTrainManager::GetGlobalInt("RsnUseAOD049Patch",valid);
 
    if (isRsnMini) {
       postfix.Prepend("Mini");
@@ -30,7 +33,7 @@ AliAnalysisTaskSE *AddRsnTask(TString rsnPart,TString rsnCut,TString postfix="")
       AliRsnAnalysisTask *taskRsn = new AliRsnAnalysisTask(TString::Format("Rsn%s",postfix.Data()).Data());
       task = (AliAnalysisTaskSE *) taskRsn;
    }
-   
+
    postfix.Append(TString::Format("_%s_%s",rsnPart.Data(),rsnCut.Data()).Data());
 
    if (physSelBit>=0) task->SelectCollisionCandidates((AliVEvent::EOfflineTriggerTypes)physSelBit);
@@ -49,6 +52,13 @@ AliAnalysisTaskSE *AddRsnTask(TString rsnPart,TString rsnCut,TString postfix="")
       return 0;
    }
 
+   // setup Event Mixing
+   if (isMixing) AddEventMixingSettings(task);
+
+   if (isAOD049 && (!useMC) && (collisionType==1)) {
+      task->SetUseCentralityPatch(kTRUE);
+   }
+
    // add the task to manager
    mgr->AddTask(task);
 
@@ -82,6 +92,39 @@ AliAnalysisTaskSE *AddRsnTask(TString rsnPart,TString rsnCut,TString postfix="")
    return task;
 }
 
+void AddEventMixingSettings(AliAnalysisTaskSE *task) {
+
+   Bool_t valid = kTRUE;
+   Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
+   Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
+   Int_t mixNum = AliRsnTrainManager::GetGlobalInt("RsnNumMix",valid);
+   
+   Int_t isMixDiffMult = AliRsnTrainManager::GetGlobalInt("RsnMixDiffMult",valid);
+   Int_t isMixDiffVz = AliRsnTrainManager::GetGlobalInt("RsnMixDiffVz",valid);
+   Int_t isMixDiffAngle = AliRsnTrainManager::GetGlobalInt("RsnMixDiffAngle",valid);
+
+   if (isRsnMini) {
+      AliRsnMiniAnalysisTask *taskRsn = (AliRsnMiniAnalysisTask *) task;
+      if (collisionType == 0) {
+         //         taskRsn->UseMultiplicity("TRACKS");
+         taskRsn->UseMultiplicity("QUALITY");
+         if (isMixDiffMult) taskRsn->SetMaxDiffMult(10);
+      } else {
+         taskRsn->UseCentrality("V0M");
+         if (isMixDiffMult) taskRsn->SetMaxDiffMult(1);
+      }
+      // set mixing
+      taskRsn->UseContinuousMix();
+      //task->UseBinnedMix();
+      taskRsn->SetNMix(mixNum);
+      
+      if (isMixDiffVz) taskRsn->SetMaxDiffVz(1);
+      if (isMixDiffAngle) taskRsn->SetMaxDiffAngle(30.0 * TMath::DegToRad());
+   }
+   // TODO RSN non Mini
+
+}
+
 Bool_t RsnLoadMacroTask(TString macro,TString path="") {
 
    Bool_t valid;
index a64428fb875f864ac34d69617b8561386ad5a7d0..3f6559fd0b41410bdcd6c1d928fd58641df70ad9 100644 (file)
@@ -1,4 +1,4 @@
-AliAnalysisTask *AddRsnTaskTrain(const char *commonStr,const char *rsnStr,const char *rsnCutStr,TString rsnQualityCutStr="") {
+AliAnalysisTask *AddRsnTaskTrain(const char *commonStr,const char *rsnStr,const char *rsnCutStr,TString rsnQualityCutStr="",TString extraMacro="",TString extraMacroArgs="") {
    // rsnStr -> <Name>
    // rsnCutStr -> <CutName>
    // This will use AddRsnPairs<Name>.C
@@ -27,13 +27,24 @@ AliAnalysisTask *AddRsnTaskTrain(const char *commonStr,const char *rsnStr,const
    //pp_LHC11_p4_120
 
 
-   if (!RsnLoadMacroTrain("RsnTrainCommonSettings.C")) return kFALSE;
-   RsnTrainCommonSettings(commonStr);
-
+   if (!RsnLoadMacroTrain("RsnTrainCommonSettings.C")) return kFALSE; 
+   if (!extraMacro.IsNull()) {
+      if (!RsnLoadMacroTrain(extraMacro.Data())) return kFALSE;
+   }
+   RsnTrainCommonSettings(commonStr,rsnStr,extraMacro,extraMacroArgs);
+   
    rsnMgr->Print();
 
    if (!RsnLoadMacroTrain("AddRsnTask.C")) return kFALSE;
-   return AddRsnTask(rsnStr,rsnCutStr,"");
+   
+   // Generate Rsn Analysisa Task
+   AliAnalysisTask* task = AddRsnTask(rsnStr,rsnCutStr,"");
+   
+   // deleting AliRsnTrainManager to reset all previous settings
+   delete rsnMgr;
+   
+   return task;
+   
 }
 
 Bool_t RsnLoadMacroTrain(TString macro,TString path="") {
index f13b54f5fe8d1ab1f431a2cb435218ddf1d5e6cd..793e2bbbaba1a467392eefaf61961512cd3dd07e 100644 (file)
@@ -463,40 +463,44 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
    // nITCcluster
    AliRsnValueDaughter *axisITSnClusters = new AliRsnValueDaughter("ITS", AliRsnValueDaughter::kNITSclusters);
-   axisITSnClusters->SetBins(10,0,10);
+   axisITSnClusters->SetBins(8,-0.5,7.5);
 
    AliRsnListOutput *outMonitorITSnClusters = new AliRsnListOutput("nClusters", AliRsnListOutput::kHistoDefault);
    outMonitorITSnClusters->AddValue(axisITSnClusters);
+   outMonitorITSnClusters->AddValue(axisPtBig);
    // add outputs to loop
    if (mon) mon->Add(outMonitorITSnClusters);
    if (lm) lm->AddOutput(outMonitorITSnClusters);
 
    // nTPCcluster
    AliRsnValueDaughter *axisTPCnClusters = new AliRsnValueDaughter("TPC", AliRsnValueDaughter::kNTPCclusters);
-   axisTPCnClusters->SetBins(300,0,300);
+   axisTPCnClusters->SetBins(166,-0.5,165.5);
 
    AliRsnListOutput *outMonitorTPCnClusters = new AliRsnListOutput("nClusters", AliRsnListOutput::kHistoDefault);
    outMonitorTPCnClusters->AddValue(axisTPCnClusters);
+   outMonitorTPCnClusters->AddValue(axisPtBig);
    // add outputs to loop
    if (mon) mon->Add(outMonitorTPCnClusters);
    if (lm) lm->AddOutput(outMonitorTPCnClusters);
 
    // ITSchi2
    AliRsnValueDaughter *axisITSchi2 = new AliRsnValueDaughter("ITS", AliRsnValueDaughter::kITSchi2);
-   axisITSchi2->SetBins(10,0,10);
+   axisITSchi2->SetBins(100,0,10);
 
    AliRsnListOutput *outMonitorITSchi2 = new AliRsnListOutput("chi2", AliRsnListOutput::kHistoDefault);
    outMonitorITSchi2->AddValue(axisITSchi2);
+   outMonitorITSchi2->AddValue(axisPtBig);
    // add outputs to loop
    if (mon) mon->Add(outMonitorITSchi2);
    if (lm) lm->AddOutput(outMonitorITSchi2);
 
    // TPCchi2
    AliRsnValueDaughter *axisTPCchi2 = new AliRsnValueDaughter("TPC", AliRsnValueDaughter::kTPCchi2);
-   axisTPCchi2->SetBins(10,0,10);
+   axisTPCchi2->SetBins(100,0,10);
 
    AliRsnListOutput *outMonitorTPCchi2 = new AliRsnListOutput("chi2", AliRsnListOutput::kHistoDefault);
    outMonitorTPCchi2->AddValue(axisTPCchi2);
+   outMonitorTPCchi2->AddValue(axisPtBig);
    // add outputs to loop
    if (mon) mon->Add(outMonitorTPCchi2);
    if (lm) lm->AddOutput(outMonitorTPCchi2);
@@ -507,6 +511,7 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
    AliRsnListOutput *outMonitorDCAXY = new AliRsnListOutput("DCA", AliRsnListOutput::kHistoDefault);
    outMonitorDCAXY->AddValue(axisDCAXY);
+   outMonitorDCAXY->AddValue(axisPtBig);
    // add outputs to loop
    if (mon) mon->Add(outMonitorDCAXY);
    if (lm) lm->AddOutput(outMonitorDCAXY);
@@ -517,6 +522,7 @@ void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
 
    AliRsnListOutput *outMonitorDCAZ = new AliRsnListOutput("DCA", AliRsnListOutput::kHistoDefault);
    outMonitorDCAZ->AddValue(axisDCAZ);
+   outMonitorDCAZ->AddValue(axisPtBig);
    // add outputs to loop
    if (mon) mon->Add(outMonitorDCAZ);
    if (lm) lm->AddOutput(outMonitorDCAZ);
index fba0dab36f9b73803dbe3bdd884ea0c193c8e172..372e302495b6c9d326a9710c2fb65afe66af8568 100644 (file)
@@ -1,5 +1,10 @@
 AliESDtrackCuts *RsnQualityCut(TString cut="pp_LHC11_p4_120") {
 
+
+   // For RSN analysis, we select Primaries
+   Bool_t selPrimaries = kTRUE;
+   
+   Printf("RsnQualityCut : %s",cut.Data());
    AliESDtrackCuts *esdTrackCuts = 0;
    if (cut.Contains("pp_LHC11a_p4")) {
       //esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(Bool_t selPrimaries=kTRUE, Int_t clusterCut=1);
index 0645ae23750e8add0ccd27825664c9350ca90868..a852d8085a00ef0229784c8744a6b43b464792f4 100644 (file)
@@ -1,4 +1,4 @@
-void RsnTrainCommonSettings(TString type) {
+void RsnTrainCommonSettings(TString type,TString rsnPart,TString extraMacro="",TString extraMacroArgs="") {
 
    Bool_t valid;
    AliRsnTrainManager::GetGlobalStr("LegoTrainPath",valid);
@@ -7,6 +7,10 @@ void RsnTrainCommonSettings(TString type) {
       AliRsnTrainManager::SetGlobalStr("LegoTrainPath",legoTrainPath.Data());
    }
 
+   // removing Option part fo Rsn particle
+   if (rsnPart.Contains(":")) rsnPart.Remove(rsnPart.Index(":"),rsnPart.Length());
+   AliRsnTrainManager::SetGlobalStr("RsnParticle",rsnPart.Data());
+
    // CollisionType (pp=0,PbPb=1,pPb=2)
    if (type.Contains("pp")) AliRsnTrainManager::SetGlobalInt("IsCollisionType",0);
    else if (type.Contains("PbPb")) AliRsnTrainManager::SetGlobalInt("IsCollisionType",1);
@@ -22,9 +26,7 @@ void RsnTrainCommonSettings(TString type) {
 
    // flag if we want to use event Mixing
    if (type.Contains("MIX")) AliRsnTrainManager::SetGlobalInt("IsMixing",1);
-   AliRsnTrainManager::SetGlobalInt("IsMixing",0);
-   // number of mixing
-   AliRsnTrainManager::SetGlobalInt("NumMix",5);
+   else AliRsnTrainManager::SetGlobalInt("IsMixing",0);
 
    // Use Rsn Mini
    if (type.Contains("MINI")) AliRsnTrainManager::SetGlobalInt("IsRsnMini",1);
@@ -32,16 +34,28 @@ void RsnTrainCommonSettings(TString type) {
 
 
    // current RSN base defaults (Will be changed in future)
-
-   AliRsnTrainManager::SetGlobalDbl("RsnEventCutPrimaryVertex",10.0);
-   AliRsnTrainManager::SetGlobalStr("RsnLegoTrainCommonCutOption","mon");
-   AliRsnTrainManager::SetGlobalInt("RsnPhysSelFilterBit",-1);
-   AliRsnTrainManager::SetGlobalInt("RsnCommonQualityCut",-1);
-   AliRsnTrainManager::SetGlobalInt("RsnUseRapidity",0);
-   AliRsnTrainManager::SetGlobalInt("RsnOutputFull",1);
-   AliRsnTrainManager::SetGlobalInt("RsnUseMCMomentum",0);
-   AliRsnTrainManager::SetGlobalInt("RsnUseMCMonitoring",0);
-
+   if (!extraMacro.IsNull()) {
+      extraMacro.ReplaceAll(".C","");
+      Printf("Running Extra Macro %s(%s)",extraMacro.Data(),extraMacroArgs.Data());
+      gROOT->ProcessLine(TString::Format("%s(%s)",extraMacro.Data(),extraMacroArgs.Data()).Data());
+   }
+   AliRsnTrainManager::SetGlobalInt("RsnNumMix",5,kFALSE);
+   AliRsnTrainManager::SetGlobalDbl("RsnEventCutPrimaryVertex",10.0,kFALSE);
+   AliRsnTrainManager::SetGlobalStr("RsnLegoTrainCommonCutOption","mon",kFALSE);
+   AliRsnTrainManager::SetGlobalInt("RsnPhysSelFilterBit",-1,kFALSE);
+   AliRsnTrainManager::SetGlobalInt("RsnCommonQualityCut",-1,kFALSE);
+   AliRsnTrainManager::SetGlobalInt("RsnUseRapidity",0,kFALSE);
+   AliRsnTrainManager::SetGlobalInt("RsnOutputFull",1,kFALSE);
+   AliRsnTrainManager::SetGlobalInt("RsnUseMCMomentum",0,kFALSE);
+   AliRsnTrainManager::SetGlobalInt("RsnUseMCMonitoring",0,kFALSE);
+   AliRsnTrainManager::SetGlobalInt("RsnUseAOD049Patch",0,kFALSE);
+   
+   // for now we will use only on/off (0/1), maybe we can use number also, but let's see if neede
+   AliRsnTrainManager::SetGlobalInt("RsnMixDiffMult",1);
+   AliRsnTrainManager::SetGlobalInt("RsnMixDiffVz",1);
+   AliRsnTrainManager::SetGlobalInt("RsnMixDiffAngle",0);
+            
+   
    // expert options (don't change)
    AliRsnTrainManager::SetGlobalInt("RsnMixPrintRefresh",-1);
 
diff --git a/PWGLF/RESONANCES/macros/lego_train/RsnTrainSettingsExtra.C b/PWGLF/RESONANCES/macros/lego_train/RsnTrainSettingsExtra.C
new file mode 100644 (file)
index 0000000..753dd7c
--- /dev/null
@@ -0,0 +1,25 @@
+void RsnTrainSettingsExtra(Double_t primaryVertex,
+                           Int_t useCommonQualityCut,
+                           Int_t numMix,
+                           Int_t filterBit,
+                           Int_t useRapidity,
+                           Int_t useAOD49Patch,
+                           Int_t useMixDiffMult,
+                           Int_t useMixDiffVz,
+                           Int_t useMixDiffAngle) {
+
+   AliRsnTrainManager::SetGlobalDbl("RsnEventCutPrimaryVertex",primaryVertex);
+   AliRsnTrainManager::SetGlobalInt("RsnCommonQualityCut",useCommonQualityCut);
+   AliRsnTrainManager::SetGlobalInt("RsnPhysSelFilterBit",filterBit);
+   AliRsnTrainManager::SetGlobalInt("RsnUseRapidity",useRapidity);
+   AliRsnTrainManager::SetGlobalInt("RsnUseAOD049Patch",useAOD49Patch);
+
+   // for now we will use only on/off (0/1), maybe we can use number also, but let's see if neede
+   AliRsnTrainManager::SetGlobalInt("RsnNumMix",numMix);
+   AliRsnTrainManager::SetGlobalInt("RsnMixDiffMult",useMixDiffMult);
+   AliRsnTrainManager::SetGlobalInt("RsnMixDiffVz",useMixDiffVz);
+   AliRsnTrainManager::SetGlobalInt("RsnMixDiffAngle",useMixDiffAngle);
+
+
+   return;
+}