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;
return event->Angle();
case kLeadingPt:
return 0.0;
- // ---- pair values --------------------------------------------------------------------------
- case kPt:
+ case kPt:
return pair->Pt(fUseMCInfo);
case kInvMass:
return pair->InvMass(fUseMCInfo);
//__________________________________________________________________________________________________
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 ©) : TNamed(copy),
- fGlobals(copy.fGlobals)
+ fGlobals(copy.fGlobals)
{
- //
- // Copy constructor
- //
+ //
+ // Copy constructor
+ //
}
//__________________________________________________________________________________________________
AliRsnTrainManager &AliRsnTrainManager::operator=(const AliRsnTrainManager ©)
{
- //
- // Assignment constructor
- //
- TNamed::operator=(copy);
- if (this == ©)
- return *this;
-
- fGlobals = copy.fGlobals;
- return (*this);
+ //
+ // Assignment constructor
+ //
+ TNamed::operator=(copy);
+ if (this == ©)
+ 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;
}
//______________________________________________________________________________
- 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=========================================================");
+
+ */
}
AliRsnTrainManager &operator=(const AliRsnTrainManager ©);
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);
rsnBaseSettings.Append("_MINI");
if (!RsnLoadMacro("AddRsnTaskTrain.C")) return kFALSE;
- AddRsnTaskTrain(rsnBaseSettings,rsnStr.Data(),rsnCutStr.Data());
+ AddRsnTaskTrain(rsnBaseSettings,rsnStr.Data(),rsnCutStr.Data(),"","","");
return kTRUE;
}
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;
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;
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();
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());
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();
//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());
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;
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")) {
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;
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
//---------------------------------------------
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);
}
}
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);
AliRsnCutSet *cutsEvent=0,
AliRsnCutSet *cutsPair=0,
TString suffix = "") {
+ cerr<<"***** AddRsnPairsPhi"<<endl;
Printf("id1=%d id2=%d",listID1,listID2);
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
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");
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);
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);
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;
-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
//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="") {
// 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);
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);
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);
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);
-void RsnTrainCommonSettings(TString type) {
+void RsnTrainCommonSettings(TString type,TString rsnPart,TString extraMacro="",TString extraMacroArgs="") {
Bool_t valid;
AliRsnTrainManager::GetGlobalStr("LegoTrainPath",valid);
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);
// 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);
// 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);
--- /dev/null
+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;
+}