TString rsnStr="Phi";
// Rsn Cut
TString rsnCutStr="PhiNsigma:KTPCnsig30";
-
-
+ // Rsn Quality Cut
+ TString rsnQualityCutStr = "";
+ // rsnQualityCutStr = "pp_LHC11_p4_120";
+
input.ToLower();
inputMC.ToLower();
Bool_t useMC = !inputMC.CompareTo("mc");
if (!rsnIH) return 0;
Bool_t valid = kTRUE;
- Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
+// Int_t collisionType = AliRsnTrainManager::GetGlobalInt("IsCollisionType",valid);
Int_t useCommonQualityCut = AliRsnTrainManager::GetGlobalInt("RsnCommonQualityCut",valid);
+ TString rsnQualityCut = AliRsnTrainManager::GetGlobalStr("RsnQualityCut",valid);
Int_t isMC = AliRsnTrainManager::GetGlobalInt("IsMC",valid);
Int_t isRsnMini = AliRsnTrainManager::GetGlobalInt("IsRsnMini",valid);
Int_t isMixing = AliRsnTrainManager::GetGlobalInt("IsMixing",valid);
TString scheme="";
AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQualityK");
- if (useCommonQualityCut>=0) {
- qualityCut->SetAODTestFilterBit(useCommonQualityCut);
+ if (!rsnQualityCut.IsNull()) {
+ AliESDtrackCuts *esdTK = RsnQualityCut(rsnQualityCut.Data());
+ qualityCut->SetESDtrackCuts(esdTK);
} else {
- qualityCut->SetDefaults2010();
+ if (useCommonQualityCut>=0) {
+ qualityCut->SetAODTestFilterBit(useCommonQualityCut);
+ } else {
+ qualityCut->SetDefaults2010();
+ }
}
+
cuts->AddCut(qualityCut);
if (!scheme.IsNull()) scheme += "&";
scheme += qualityCut->GetName();
\r
Bool_t usetof = kFALSE;\r
if(opt.Contains("tof")) {\r
- Printf("Using tof PID range (%.2f,%.2f)",0.0,1E+20);\r
- usetof = kTRUE;\r
+ Printf("Using tof PID range (%.2f,%.2f)",0.0,1E+20);\r
+ usetof = kTRUE;\r
}\r
\r
Bool_t usetpc = kFALSE;\r
if(opt.Contains("tpc")) {\r
- Printf("Using tpc PID range (%.2f,%.2f)",0.0,1E+20);\r
- usetpc = kTRUE;\r
- }\r
+ Printf("Using tpc PID range (%.2f,%.2f)",0.0,1E+20);\r
+ usetpc = kTRUE;\r
+ }\r
\r
//---------------------------------------------\r
// Combine cuts\r
cuts->AddCut(qualityCut);\r
if (!scheme.IsNull()) scheme += "&";\r
scheme += qualityCut->GetName();\r
- \r
+\r
if (usetpc) {\r
- AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPC",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);\r
- cutPiTPC->SinglePIDRange(nSigmaTPC);\r
- //cutPiTPC->AddPIDRange(nSigmaTPC,0.0,0.7);\r
- cuts->AddCut(cutPiTPC);\r
- if (!scheme.IsNull()) scheme += "&";\r
- scheme += cutPiTPC->GetName();\r
- }\r
+ AliRsnCutPIDNSigma *cutPiTPC = new AliRsnCutPIDNSigma("cutPIDNSigmaTPC",AliPID::kPion,AliRsnCutPIDNSigma::kTPC);\r
+ cutPiTPC->SinglePIDRange(nSigmaTPC);\r
+ //cutPiTPC->AddPIDRange(nSigmaTPC,0.0,0.7);\r
+ cuts->AddCut(cutPiTPC);\r
+ if (!scheme.IsNull()) scheme += "&";\r
+ scheme += cutPiTPC->GetName();\r
+ }\r
\r
if(usetof) {\r
- AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOF",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);\r
- cutPiTOF->SinglePIDRange(nSigmaTOF);\r
- //cutPiTOF->AddPIDRange(nSigmaTOF,0.7,1e20);\r
- cuts->AddCut(cutPiTOF);\r
- if (!scheme.IsNull()) scheme += "&";\r
- scheme += cutPiTOF->GetName();\r
+ AliRsnCutPIDNSigma *cutPiTOF = new AliRsnCutPIDNSigma("cutPIDNSigmaTOF",AliPID::kPion,AliRsnCutPIDNSigma::kTOF);\r
+ cutPiTOF->SinglePIDRange(nSigmaTOF);\r
+ //cutPiTOF->AddPIDRange(nSigmaTOF,0.7,1e20);\r
+ cuts->AddCut(cutPiTOF);\r
+ if (!scheme.IsNull()) scheme += "&";\r
+ scheme += cutPiTOF->GetName();\r
}\r
\r
if (useEta) {\r
\r
AliRsnCutTrackQuality *qualityCut = new AliRsnCutTrackQuality("cutQuatityPi");\r
//qualityCut->SetDefaults2010();\r
- \r
- qualityCut->SetDCAZmax(0.2);\r
- qualityCut->SetDCARmax(0.02);\r
- qualityCut->AddStatusFlag(AliESDtrack::kTPCin , kTRUE);\r
- qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);\r
- qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);\r
- \r
- qualityCut->SetPtRange(0.2, 1E+20);\r
- qualityCut->SetEtaRange(-0.8, 0.8);\r
- qualityCut->SetSPDminNClusters(0);\r
- qualityCut->SetITSminNClusters(0);\r
- qualityCut->SetITSmaxChi2(1E+20);\r
- qualityCut->SetTPCminNClusters(70);\r
- qualityCut->SetTPCmaxChi2(4.0);\r
- qualityCut->SetRejectKinkDaughters();\r
+\r
+ qualityCut->SetDCAZmax(0.2);\r
+ qualityCut->SetDCARmax(0.02);\r
+ qualityCut->AddStatusFlag(AliESDtrack::kTPCin , kTRUE);\r
+ qualityCut->AddStatusFlag(AliESDtrack::kTPCrefit, kTRUE);\r
+ qualityCut->AddStatusFlag(AliESDtrack::kITSrefit, kTRUE);\r
+\r
+ qualityCut->SetPtRange(0.2, 1E+20);\r
+ qualityCut->SetEtaRange(-0.8, 0.8);\r
+ qualityCut->SetSPDminNClusters(0);\r
+ qualityCut->SetITSminNClusters(0);\r
+ qualityCut->SetITSmaxChi2(1E+20);\r
+ qualityCut->SetTPCminNClusters(70);\r
+ qualityCut->SetTPCmaxChi2(4.0);\r
+ qualityCut->SetRejectKinkDaughters();\r
\r
cuts->AddCut(qualityCut);\r
if (!scheme.IsNull()) scheme += "&";\r
Printf("id1=%d id2=%d",listID1,listID2);\r
\r
// retrieve mass from PDG database\r
- \r
- // pdg rho = 133\r
- // pdg omega = 223\r
- // pdg eta = 221\r
- // pdg eta' = 331\r
- // pdg kshort = 310\r
- \r
+\r
+ // pdg rho = 133\r
+ // pdg omega = 223\r
+ // pdg eta = 221\r
+ // pdg eta' = 331\r
+ // pdg kshort = 310\r
+\r
Int_t pdg = 113;\r
TDatabasePDG *db = TDatabasePDG::Instance();\r
TParticlePDG *part = db->GetParticle(pdg);\r
outPair->AddValue(axisIM);\r
outPair->AddValue(axisPt);\r
outPair->AddValue(axisEta);\r
- outPair->AddValue(axisY);\r
+ outPair->AddValue(axisY);\r
}\r
// add outputs to loop\r
pair->AddOutput(outPair);\r
// axis Y: transverse momentum\r
out->AddAxis(ptID, nPt, minPt, maxPt);\r
out->AddAxis(etaID, nEta, minEta, maxEta);\r
- out->AddAxis(yID, nY, minY, maxY);\r
- \r
+ out->AddAxis(yID, nY, minY, maxY);\r
+\r
// axis Z: centrality\r
if (collisionType==1) out->AddAxis(centID, nCent, minCent, maxCent);\r
}\r
// axis Y: transverse momentum\r
outMC->AddAxis(ptID, nPt, minPt, maxPt);\r
outMC->AddAxis(etaID, nEta, minEta, maxEta);\r
- outRes->AddAxis(yID, nY, minY, maxY);\r
+ outRes->AddAxis(yID, nY, minY, maxY);\r
// axis Z: centrality\r
if (collisionType==1) outMC->AddAxis(centID, nCent, minCent, maxCent);\r
}\r
TList *listRsn = new TList();
listRsn->Add(new TNamed(rsnPart.Data(),rsnCut.Data()));
- if (!RsnLoadMacro("RsnConfig.C")) return kFALSE;
+ if (!RsnLoadMacroTask("RsnConfig.C")) return 0;
if (!RsnConfig(task,rsnIH,listRsn)) {
Printf("Error in RsnConfig.C");
return 0;
return task;
}
+
+Bool_t RsnLoadMacroTask(TString macro,TString path="") {
+
+ Bool_t valid;
+ TString lego_path = AliAnalysisManager::GetGlobalStr("RsnLegoTrainPath",valid);
+ if (!valid) lego_path = "$ALICE_ROOT/PWGLF/RESONANCES/macros/lego_train";
+
+ if (!gSystem->AccessPathName(macro.Data())) {
+ gROOT->LoadMacro(macro.Data());
+ Printf("Macro loaded from %s/%s ...",gSystem->pwd(),macro.Data());
+ return kTRUE;
+ }
+
+ if (!gSystem->AccessPathName(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())))) {
+ gROOT->LoadMacro(gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
+ Printf("Macro loaded from %s ...",gSystem->ExpandPathName(Form("%s/%s",lego_path.Data(),macro.Data())));
+ return kTRUE;
+ }
+
+ Printf("Error loading %s",macro.Data());
+
+ return kFALSE;
+}
\ No newline at end of file
-AliAnalysisTask *AddRsnTaskTrain(const char *commonStr,const char *rsnStr,const char *rsnCutStr) {
+AliAnalysisTask *AddRsnTaskTrain(const char *commonStr,const char *rsnStr,const char *rsnCutStr,TString rsnQualityCutStr="") {
// rsnStr -> <Name>
// rsnCutStr -> <CutName>
// This will use AddRsnPairs<Name>.C
// Creating Rsn Train Manager
AliRsnTrainManager *rsnMgr = new AliRsnTrainManager();
+ // Rsn Quality Cuts
+ if (!RsnLoadMacroTrain("RsnQualityCut.C")) return kFALSE;
+ if (!rsnQualityCutStr.IsNull()) AliRsnTrainManager::SetGlobalStr("RsnQualityCut",rsnQualityCutStr.Data());
+ //pp_LHC11_p4_120
+
+
if (!RsnLoadMacroTrain("RsnTrainCommonSettings.C")) return kFALSE;
RsnTrainCommonSettings(commonStr);
--- /dev/null
+AliESDtrackCuts *RsnQualityCut(TString cut="pp_LHC11_p4_120") {
+
+ AliESDtrackCuts *esdTrackCuts = 0;
+ if (cut.Contains("pp_LHC11a_p4")) {
+ //esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(Bool_t selPrimaries=kTRUE, Int_t clusterCut=1);
+ esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1);
+
+ // std AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,1)
+ esdTrackCuts->SetMaxChi2PerClusterTPC(4);
+ esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
+ esdTrackCuts->SetRequireTPCRefit(kTRUE);
+ // ITS
+
+ esdTrackCuts->SetRequireITSRefit(kTRUE);
+ esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
+ AliESDtrackCuts::kAny);
+ if(selPrimaries) {
+ // 7*(0.0015+0.0050/pt^1.1)
+ esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0105+0.0350/pt^1.1");
+ esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
+ }
+ esdTrackCuts->SetMaxDCAToVertexZ(2);
+ esdTrackCuts->SetDCAToVertex2D(kFALSE);
+ esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+
+ // additional cuts by FilterBit 10
+
+ if (!cut.CompareTo("pp_LHC11a_p4_120")) esdTrackCuts->SetMinNCrossedRowsTPC(120);
+ if (!cut.CompareTo("pp_LHC11a_p4_70")) esdTrackCuts->SetMinNCrossedRowsTPC(70);
+
+ esdTrackCuts->SetMinRatioCrossedRowsOverFindableClustersTPC(0.8);
+ esdTrackCuts->SetMaxChi2PerClusterITS(36);
+ esdTrackCuts->SetMaxFractionSharedTPCClusters(0.4);
+ esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
+ esdTrackCuts->SetEtaRange(-0.9,0.9);
+ esdTrackCuts->SetPtRange(0.15, 1e10);
+ } else if (cut.Contains("pp_LHC11a_p3")) {
+ //AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(Bool_t selPrimaries=kTRUE, Int_t clusterCut=0);
+ esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,0);
+
+ // std AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,0);
+ esdTrackCuts->SetMinNClustersTPC(70);
+ esdTrackCuts->SetMaxChi2PerClusterTPC(4);
+ esdTrackCuts->SetAcceptKinkDaughters(kFALSE);
+ esdTrackCuts->SetRequireTPCRefit(kTRUE);
+ // ITS
+ esdTrackCuts->SetRequireITSRefit(kTRUE);
+ esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD,
+ AliESDtrackCuts::kAny);
+ if(selPrimaries) {
+ // 7*(0.0026+0.0050/pt^1.01)
+ esdTrackCuts->SetMaxDCAToVertexXYPtDep("0.0182+0.0350/pt^1.01");
+ esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
+ }
+ esdTrackCuts->SetMaxDCAToVertexZ(2);
+ esdTrackCuts->SetDCAToVertex2D(kFALSE);
+ esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
+ esdTrackCuts->SetMaxChi2PerClusterITS(36)
+ }
+
+ return esdTrackCuts;
+}