- AliDebugClass(1, Form("fESDtrackCuts=%p",fESDtrackCuts));
+ /*AliDebugClass(1, Form("fESDtrackCuts=%p",fESDtrackCuts));
if (fESDtrackCuts) { // use fESDtrackCuts to retrieve cuts values
if(pTrack->GetTPCNcls() < CutMinNClusterTPC) {AliDebugClass(2, "Positive daughter not MinNclsTPC"); return kFALSE;}
if(nTrack->GetTPCNcls() < CutMinNClusterTPC) {AliDebugClass(2, "Negative daughter not MinNclsTPC"); return kFALSE;}
- }
+ }*/
// filter like-sign V0
if ( TMath::Abs( ((pTrack->Charge()) - (nTrack->Charge())) ) < 0.1) {
// Generate Rsn Analysisa Task
AliAnalysisTask *task = AddRsnTask(rsnStr,rsnCutStr,"");
+ Printf("Saving Rsn Info -> RsnInfo.root");
+ TFile *f = TFile::Open("RsnInfo.root","RECREATE");
+ AliRsnTrainManager *rsnMgr = AliRsnTrainManager::GetRsnTrainManager();
+ TMap *map = rsnMgr->GetGlobals();
+ f->WriteObject(map,"RsnInfoMap");
+ f->Close();
+
// deleting AliRsnTrainManager to reset all previous settings
delete rsnMgr;
esdTrackCuts->SetMaxChi2TPCConstrainedGlobal(36);
esdTrackCuts->SetEtaRange(-0.9,0.9);
esdTrackCuts->SetPtRange(0.15, 1e10);
- } else if (cut.Contains("pp_LHC11a_p3")) {
+ } else if (cut.Contains("pp_LHC11a_p3_bit4")) {
+ //AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(Bool_t selPrimaries=kTRUE, Int_t clusterCut=0);
+ esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kFALSE,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);
+
+ // additional to std cuts
+ esdTrackCuts->SetMaxDCAToVertexXY(2.4);
+ esdTrackCuts->SetMaxDCAToVertexZ(3.2);
+ esdTrackCuts->SetDCAToVertex2D(kTRUE);
+
+ } else if (cut.Contains("pp_LHC11a_p3_bit5")) {
//AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(Bool_t selPrimaries=kTRUE, Int_t clusterCut=0);
esdTrackCuts = AliESDtrackCuts::GetStandardITSTPCTrackCuts2010(kTRUE,0);
esdTrackCuts->SetMaxDCAToVertexZ(2);
esdTrackCuts->SetDCAToVertex2D(kFALSE);
esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
- esdTrackCuts->SetMaxChi2PerClusterITS(36)
+ esdTrackCuts->SetMaxChi2PerClusterITS(36);
+
}
return esdTrackCuts;
--- /dev/null
+/***************************************************************************
+ massimo.venaruzzo@cern.ch - last modified on 11/10/2012
+//
+// General macro to configure the RSN analysis task.
+// It calls all configs desired by the user, by means
+// of the boolean switches defined in the first lines.
+// ---
+// Inputs:
+// 1) flag to know if running on MC or data
+// 2) path where all configs are stored
+// ---
+// Returns:
+// kTRUE --> initialization successful
+// kFALSE --> initialization failed (some config gave errors)
+//
+****************************************************************************/
+
+AliRsnMiniAnalysisTask * AddAnalysisTaskSigmaStarPbPb
+(
+ Bool_t isMC,
+ Bool_t isPP,
+ Int_t aodFilterBit = 5,
+ Int_t piPIDCut = 3.0,
+ Int_t pPIDCut = 3.0,
+ Int_t nmix = 5,
+ Float_t maxDiffVzMix = 1.0,
+ Float_t maxDiffMultMix = 10.0,
+ Float_t maxDiffAngleMixDeg = 20.0,
+ Int_t aodN = 68,
+ TString outNameSuffix = "Sigma1385"
+)
+{
+ //
+ // -- INITIALIZATION ----------------------------------------------------------------------------
+ // retrieve analysis manager
+ //
+
+ AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
+ if (!mgr) {
+ ::Error("AddAnalysisTaskSigmaStarPbPb", "No analysis manager to connect to.");
+ return NULL;
+ }
+
+ // create the task and configure
+ TString taskName = Form("SigmaStar%s%s_%i%i", (isPP? "pp" : "PbPb"), (isMC ? "MC" : "Data"));
+ AliRsnMiniAnalysisTask *task = new AliRsnMiniAnalysisTask(taskName.Data(), isMC);
+ if (!isMC && !isPP){
+ Printf(Form("========== SETTING USE CENTRALITY PATCH AOD049 : %s", (aodN==49)? "yes" : "no"));
+ task->SetUseCentralityPatch(aodN==49);
+ }
+ if (isPP)
+ task->UseMultiplicity("QUALITY");
+ else
+ task->UseCentrality("V0M");
+ // set event mixing options
+ task->UseContinuousMix();
+ //task->UseBinnedMix();
+ task->SetNMix(nmix);
+ task->SetMaxDiffVz(maxDiffVzMix);
+ task->SetMaxDiffMult(maxDiffMultMix);
+ if (!isPP) task->SetMaxDiffAngle(maxDiffAngleMixDeg*TMath::DegToRad()); //set angle diff in rad
+ ::Info("AddAnalysisTaskSigmaStarPbPb", Form("Event mixing configuration: \n events to mix = %i \n max diff. vtxZ = cm %5.3f \n max diff multi = %5.3f \n max diff EP angle = %5.3f deg", nmix, maxDiffVzMix, maxDiffMultMix, (isPP ? 0.0 : maxDiffAngleMixDeg)));
+
+ mgr->AddTask(task);
+
+ //
+ // -- EVENT CUTS (same for all configs) ---------------------------------------------------------
+ //
+ // cut on primary vertex:
+ // - 2nd argument --> |Vz| range
+ // - 3rd argument --> minimum required number of contributors
+ // - 4th argument --> tells if TPC stand-alone vertexes must be accepted
+ AliRsnCutPrimaryVertex *cutVertex = new AliRsnCutPrimaryVertex("cutVertex", 10.0, 0, kFALSE);
+ if (isPP) cutVertex->SetCheckPileUp(kTRUE); // set the check for pileup
+
+ // define and fill cut set for event cut
+ AliRsnCutSet *eventCuts = new AliRsnCutSet("eventCuts", AliRsnTarget::kEvent);
+ eventCuts->AddCut(cutVertex);
+ eventCuts->SetCutScheme(cutVertex->GetName());
+ // set cuts in task
+ task->SetEventCuts(eventCuts);
+
+ //
+ // -- EVENT-ONLY COMPUTATIONS -------------------------------------------------------------------
+ //
+ //vertex
+ Int_t vtxID = task->CreateValue(AliRsnMiniValue::kVz, kFALSE);
+ AliRsnMiniOutput *outVtx = task->CreateOutput("eventVtx", "HIST", "EVENT");
+ outVtx->AddAxis(vtxID, 400, -20.0, 20.0);
+
+ //multiplicity or centrality
+ Int_t multID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
+ AliRsnMiniOutput *outMult = task->CreateOutput("eventMult", "HIST", "EVENT");
+ if (isPP)
+ outMult->AddAxis(multID, 400, 0.0, 400.0);
+ else
+ outMult->AddAxis(multID, 100, 0.0, 100.0);
+
+ //event plane (only for PbPb)
+ Int_t planeID = task->CreateValue(AliRsnMiniValue::kPlaneAngle, kFALSE);
+ AliRsnMiniOutput *outPlane = 0x0; //task->CreateOutput("eventPlane", "HIST", "EVENT");
+ if (!isPP){
+ outPlane = task->CreateOutput("eventPlane", "HIST", "EVENT");
+ outPlane->AddAxis(planeID, 180, 0.0, TMath::Pi());
+ }
+
+ //
+ // -- PAIR CUTS (common to all resonances) ------------------------------------------------------
+ //
+ AliRsnCutMiniPair *cutY = new AliRsnCutMiniPair("cutRapidity", AliRsnCutMiniPair::kRapidityRange);
+ cutY->SetRangeD(-0.5, 0.5);
+
+ AliRsnCutSet *cutsPair = new AliRsnCutSet("pairCuts", AliRsnTarget::kMother);
+ cutsPair->AddCut(cutY);
+ cutsPair->SetCutScheme(cutY->GetName());
+
+ //
+ // -- CONFIG ANALYSIS --------------------------------------------------------------------------
+ gROOT->LoadMacro("$ALICE_ROOT/PWGLF/RESONANCES/macros/mini/ConfigSigmaStarPbPb.C");
+ if (isMC) {
+ Printf("========================== MC analysis - PID cuts not used");
+
+ } else
+ Printf("========================== DATA analysis - PID cuts used");
+
+ if (!ConfigSigmaStarPbPb(task, isPP, isMC, piPIDCut, pPIDCut, aodFilterBit, "", cutsPair)) return 0x0;
+
+ //
+ // -- CONTAINERS --------------------------------------------------------------------------------
+ //
+ TString outputFileName = AliAnalysisManager::GetCommonFileName();
+ // outputFileName += ":Rsn";
+ Printf("AddAnalysisTaskSigmaStarPbPb - Set OutputFileName : \n %s\n", outputFileName.Data() );
+
+ AliAnalysisDataContainer *output = mgr->CreateContainer(Form("RsnOut_%s",outNameSuffix.Data()),
+ TList::Class(),
+ AliAnalysisManager::kOutputContainer,
+ outputFileName);
+ mgr->ConnectInput(task, 0, mgr->GetCommonInputContainer());
+ mgr->ConnectOutput(task, 1, output);
+
+ return task;
+}
AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("qualityDaughterLambda");
esdTrackCuts->SetAcceptKinkDaughters(0); // 0 = kFalse
- esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
+ //esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
esdTrackCuts->SetMaxChi2PerClusterTPC(4);
esdTrackCuts->SetMinNClustersTPC(70);
esdTrackCuts->SetRequireTPCRefit();
cutSetAntiLambda->SetCutScheme(cutAntiLambda->GetName());
// add to task
Int_t iCutAntiLambda = task->AddTrackCuts(cutSetAntiLambda);
-
- //######################################################################################################
- //Loose Cuts
-
- // integrated pion cut
- AliRsnCutDaughterSigmaStar2010PP *cutPiLoose = new AliRsnCutDaughterSigmaStar2010PP("cutPionForSigmaStarLoose", AliPID::kPion);
- cutPiLoose->SetPIDCut(piPIDCut);
- AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
- cutQuality->SetAODTestFilterBit(aodFilterBit);
- cutQuality->SetDCARmax(0.072);
-
- // cut set
- AliRsnCutSet *cutSetPiLoose = new AliRsnCutSet("setPionForSigmaStarLoose", AliRsnTarget::kDaughter);
- cutSetPiLoose->AddCut(cutPiLoose);
- cutSetPiLoose->SetCutScheme(cutPiLoose->GetName());
- // add to task
- Int_t iCutPiLoose = task->AddTrackCuts(cutSetPiLoose);
-
-
- // cut lambda
- //AliRsnCutV0 *cutLambdaLoose = new AliRsnCutV0("cutLambdaLoose", kLambda0);
- AliRsnCutV0 *cutLambdaLoose = new AliRsnCutV0("cutLambdaLoose", kLambda0, AliPID::kProton, AliPID::kPion);
- cutLambdaLoose->SetESDtrackCuts(esdTrackCuts);
- cutLambdaLoose->SetTolerance(0.013);
- cutLambdaLoose->SetMaxDCAVertex(0.4);
- cutLambdaLoose->SetMinCosPointingAngle(0.82);
- cutLambdaLoose->SetMaxDaughtersDCA(0.67);
- cutLambdaLoose->SetMaxRapidity(0.8);
- cutLambdaLoose->SetAODTestFilterBit(aodFilterBit);
- cutLambdaLoose->SetPIDCut1(pPIDCut);
- cutLambdaLoose->SetPIDCut2(piPIDCut);
- cutLambdaLoose->SetPIDCut3(piPIDCut);
-
- // cut set
- AliRsnCutSet *cutSetLambdaLoose = new AliRsnCutSet("setLambdaLoose", AliRsnTarget::kDaughter);
- cutSetLambdaLoose->AddCut(cutLambdaLoose);
- cutSetLambdaLoose->SetCutScheme(cutLambdaLoose->GetName());
-
- // add to task
- Int_t iCutLambdaLoose = task->AddTrackCuts(cutSetLambdaLoose);
-
- // cut anti-AntiLambda
- //AliRsnCutV0 *cutAntiLambdaLoose = new AliRsnCutV0("cutAntiLambdaLoose", kLambda0Bar);
- AliRsnCutV0 *cutAntiLambdaLoose = new AliRsnCutV0("cutAntiLambdaLoose", kLambda0Bar, AliPID::kProton, AliPID::kPion);
- cutAntiLambdaLoose->SetESDtrackCuts(esdTrackCuts);
- cutAntiLambdaLoose->SetTolerance(0.013);
- cutAntiLambdaLoose->SetMaxDCAVertex(0.4);
- cutAntiLambdaLoose->SetMinCosPointingAngle(0.982);
- cutAntiLambdaLoose->SetMaxDaughtersDCA(0.67);
- cutAntiLambdaLoose->SetMaxRapidity(0.8);
- cutAntiLambdaLoose->SetAODTestFilterBit(aodFilterBit);
- cutAntiLambdaLoose->SetPIDCut1(pPIDCut);
- cutAntiLambdaLoose->SetPIDCut2(piPIDCut);
- cutAntiLambdaLoose->SetPIDCut3(piPIDCut);
-
- // cut set
- AliRsnCutSet *cutSetAntiLambdaLoose = new AliRsnCutSet("setAntiLambdaLoose", AliRsnTarget::kDaughter);
- cutSetAntiLambdaLoose->AddCut(cutAntiLambdaLoose);
- cutSetAntiLambdaLoose->SetCutScheme(cutAntiLambdaLoose->GetName());
- // add to task
- Int_t iCutAntiLambdaLoose = task->AddTrackCuts(cutSetAntiLambdaLoose);
-
-
- //######################################################################################################
-
-
- //######################################################################################################
- //Tight Cuts
-
- // integrated pion cut
- AliRsnCutDaughterSigmaStar2010PP *cutPiTight = new AliRsnCutDaughterSigmaStar2010PP("cutPionForSigmaStarTight", AliPID::kPion);
- cutPiTight->SetPIDCut(piPIDCut);
- AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
- cutQuality->SetAODTestFilterBit(aodFilterBit);
- cutQuality->SetDCARmax(0.036);
-
- // cut set
- AliRsnCutSet *cutSetPiTight = new AliRsnCutSet("setPionForSigmaStarTight", AliRsnTarget::kDaughter);
- cutSetPiTight->AddCut(cutPiTight);
- cutSetPiTight->SetCutScheme(cutPiTight->GetName());
- // add to task
- Int_t iCutPiTight = task->AddTrackCuts(cutSetPiTight);
-
-
- // cut lambda
- //AliRsnCutV0 *cutLambdaTight = new AliRsnCutV0("cutLambdaTight", kLambda0);
- AliRsnCutV0 *cutLambdaTight = new AliRsnCutV0("cutLambdaTight", kLambda0, AliPID::kProton, AliPID::kPion);
- cutLambdaTight->SetESDtrackCuts(esdTrackCuts);
- cutLambdaTight->SetTolerance(0.0076);
- cutLambdaTight->SetMaxDCAVertex(0.22);
- cutLambdaTight->SetMinCosPointingAngle(0.995);
- cutLambdaTight->SetMaxDaughtersDCA(0.35);
- cutLambdaTight->SetMaxRapidity(0.8);
- cutLambdaTight->SetAODTestFilterBit(aodFilterBit);
- cutLambdaTight->SetPIDCut1(pPIDCut);
- cutLambdaTight->SetPIDCut2(piPIDCut);
- cutLambdaTight->SetPIDCut3(piPIDCut);
-
- // cut set
- AliRsnCutSet *cutSetLambdaTight = new AliRsnCutSet("setLambdaTight", AliRsnTarget::kDaughter);
- cutSetLambdaTight->AddCut(cutLambdaTight);
- cutSetLambdaTight->SetCutScheme(cutLambdaTight->GetName());
-
- // add to task
- Int_t iCutLambdaTight = task->AddTrackCuts(cutSetLambdaTight);
-
- // cut anti-AntiLambda
- //AliRsnCutV0 *cutAntiLambdaTight = new AliRsnCutV0("cutAntiLambdaTight", kLambda0Bar);
- AliRsnCutV0 *cutAntiLambdaTight = new AliRsnCutV0("cutAntiLambdaTight", kLambda0Bar, AliPID::kProton, AliPID::kPion);
- cutAntiLambdaTight->SetESDtrackCuts(esdTrackCuts);
- cutAntiLambdaTight->SetTolerance(0.0076);
- cutAntiLambdaTight->SetMaxDCAVertex(0.22);
- cutAntiLambdaTight->SetMinCosPointingAngle(0.995);
- cutAntiLambdaTight->SetMaxDaughtersDCA(0.35);
- cutAntiLambdaTight->SetMaxRapidity(0.8);
- cutAntiLambdaTight->SetAODTestFilterBit(aodFilterBit);
- cutAntiLambdaTight->SetPIDCut1(pPIDCut);
- cutAntiLambdaTight->SetPIDCut2(piPIDCut);
- cutAntiLambdaTight->SetPIDCut3(piPIDCut);
-
- // cut set
- AliRsnCutSet *cutSetAntiLambdaTight = new AliRsnCutSet("setAntiLambdaTight", AliRsnTarget::kDaughter);
- cutSetAntiLambdaTight->AddCut(cutAntiLambdaTight);
- cutSetAntiLambdaTight->SetCutScheme(cutAntiLambdaTight->GetName());
- // add to task
- Int_t iCutAntiLambdaTight = task->AddTrackCuts(cutSetAntiLambdaTight);
-
//######################################################################################################
}
- //############################################################################
- //Loose Cuts
-
- TString nameLoose [18] = {"SigmaPLoose" , "SigmaMLoose" , "ASigmaPLoose" , "ASigmaMLoose" , "SigmaPmixLoose", "SigmaMmixLoose", "ASigmaPmixLoose" , "ASigmaMmixLoose" , "SigmaPtLoose" , "SigmaMtLoose" , "ASigmaPtLoose" , "ASigmaMtLoose" , "XiMLoose" , "XiPLoose" , "Lambda1520PLoose" , "Lambda1520MLoose", "Lambda1520PBarLoose", "Lambda1520MBarLoose"};
- Int_t cutID1Loose [18] = { iCutLambdaLoose, iCutLambdaLoose, iCutAntiLambdaLoose, iCutAntiLambdaLoose, iCutLambdaLoose, iCutLambdaLoose, iCutAntiLambdaLoose, iCutAntiLambdaLoose, iCutLambdaLoose, iCutLambdaLoose, iCutAntiLambdaLoose, iCutAntiLambdaLoose, iCutLambdaLoose , iCutAntiLambdaLoose , iCutLambdaLoose , iCutLambdaLoose , iCutAntiLambdaLoose , iCutAntiLambdaLoose };
- Int_t cutID2Loose [18] = { iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose , iCutPiLoose };
-
-
- for (Int_t i = 0; i < 18; i++) {
- if (!use[i]) continue;
- if (!isPP) output[i] = "SPARSE";
- // create output
- AliRsnMiniOutput *outLoose = task->CreateOutput(Form("sigmastar_%s%s", nameLoose[i].Data(), suffix), output[i].Data(), comp[i].Data());
- // selection settings
- outLoose->SetCutID(0, cutID1Loose[i]);
- outLoose->SetCutID(1, cutID2Loose[i]);
- outLoose->SetDaughter(0, AliRsnDaughter::kLambda);
- outLoose->SetDaughter(1, AliRsnDaughter::kPion);
- outLoose->SetCharge(0, charge1[i]);
- outLoose->SetCharge(1, charge2[i]);
- outLoose->SetMotherPDG(ipdg[i]);
- outLoose->SetMotherMass(mass[i]);
- // pair cuts
- out->SetPairCuts(cutsPair);
- // axis X: invmass
- if (useIM[i])
- outLoose->AddAxis(imID, 800, 1.2, 2.0);
- // axis Y: transverse momentum
- outLoose->AddAxis(ptID, 100, 0.0, 10.0);
- // axis Z: rapidity
- //out->AddAxis(rapID, 160, -0.8, 0.8);
- if (!isPP) outLoose->AddAxis(centID, 100, 0.0, 100.0);
-
- }
-
-
- //############################################################################
-
-
- //############################################################################
- //Tight Cuts
-
- TString nameTight [18] = {"SigmaPTight" , "SigmaMTight" , "ASigmaPTight" , "ASigmaMTight" , "SigmaPmixTight", "SigmaMmixTight", "ASigmaPmixTight" , "ASigmaMmixTight" , "SigmaPtTight" , "SigmaMtTight" , "ASigmaPtTight" , "ASigmaMtTight" , "XiMTight" , "XiPTight" , "Lambda1520PTight" , "Lambda1520MTight", "Lambda1520PBarTight", "Lambda1520MBarTight"};
- Int_t cutID1Tight [18] = { iCutLambdaTight, iCutLambdaTight, iCutAntiLambdaTight, iCutAntiLambdaTight, iCutLambdaTight, iCutLambdaTight, iCutAntiLambdaTight, iCutAntiLambdaTight, iCutLambdaTight, iCutLambdaTight, iCutAntiLambdaTight, iCutAntiLambdaTight, iCutLambdaTight , iCutAntiLambdaTight , iCutLambdaTight , iCutLambdaTight , iCutAntiLambdaTight , iCutAntiLambdaTight };
- Int_t cutID2Tight [18] = { iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight , iCutPiTight };
-
-
- for (Int_t i = 0; i < 18; i++) {
- if (!use[i]) continue;
- if (!isPP) output[i] = "SPARSE";
- // create output
- AliRsnMiniOutput *outTight = task->CreateOutput(Form("sigmastar_%s%s", nameTight[i].Data(), suffix), output[i].Data(), comp[i].Data());
- // selection settings
- outTight->SetCutID(0, cutID1Tight[i]);
- outTight->SetCutID(1, cutID2Tight[i]);
- outTight->SetDaughter(0, AliRsnDaughter::kLambda);
- outTight->SetDaughter(1, AliRsnDaughter::kPion);
- outTight->SetCharge(0, charge1[i]);
- outTight->SetCharge(1, charge2[i]);
- outTight->SetMotherPDG(ipdg[i]);
- outTight->SetMotherMass(mass[i]);
- // pair cuts
- outTight->SetPairCuts(cutsPair);
- // axis X: invmass
- if (useIM[i])
- outTight->AddAxis(imID, 800, 1.2, 2.0);
- // axis Y: transverse momentum
- outTight->AddAxis(ptID, 100, 0.0, 10.0);
- // axis Z: rapidity
- //out->AddAxis(rapID, 160, -0.8, 0.8);
- if (!isPP) outTight->AddAxis(centID, 100, 0.0, 100.0);
-
- }
-
-
- AddMonitorOutput(cutSetLambda->GetMonitorOutput());
- AddMonitorOutput(cutSetAntiLambda->GetMonitorOutput());
-
-
- //############################################################################
-
if (isMC) {
TString mode = "HIST";
--- /dev/null
+//
+// *** Configuration script for Sigma*->Lambda-Pi analysis with 2010 runs ***
+//
+// A configuration script for RSN package needs to define the followings:
+//
+// (1) decay tree of each resonance to be studied, which is needed to select
+// true pairs and to assign the right mass to all candidate daughters
+// (2) cuts at all levels: single daughters, tracks, events
+// (3) output objects: histograms or trees
+//
+Bool_t ConfigSigmaStarPbPb
+(
+ AliRsnMiniAnalysisTask *task,
+ Bool_t isPP,
+ Bool_t isMC,
+ Float_t piPIDCut,
+ Float_t pPIDCut,
+ Int_t aodFilterBit,
+ const char *suffix,
+ AliRsnCutSet *cutsPair
+)
+{
+ // manage suffix
+ if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
+
+ //
+ // -- Define track cuts -------------------------------------------------------------------------
+ //
+
+ // integrated pion cut
+ AliRsnCutDaughterSigmaStar2010PP *cutPi = new AliRsnCutDaughterSigmaStar2010PP("cutPionForSigmaStar", AliPID::kPion);
+ cutPi->SetPIDCut(piPIDCut);
+ AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
+ cutQuality->SetAODTestFilterBit(aodFilterBit);
+ cutQuality->SetDCARmax(0.05);
+
+ // cut set
+ AliRsnCutSet *cutSetPi = new AliRsnCutSet("setPionForSigmaStar", AliRsnTarget::kDaughter);
+ cutSetPi->AddCut(cutPi);
+ cutSetPi->SetCutScheme(cutPi->GetName());
+ // add to task
+ Int_t iCutPi = task->AddTrackCuts(cutSetPi);
+
+ // quality cuts
+ AliESDtrackCuts *esdTrackCuts = new AliESDtrackCuts("qualityDaughterLambda");
+
+ esdTrackCuts->SetAcceptKinkDaughters(0); // 0 = kFalse
+ //esdTrackCuts->SetClusterRequirementITS(AliESDtrackCuts::kSPD, AliESDtrackCuts::kAny);
+ esdTrackCuts->SetMaxChi2PerClusterTPC(4);
+ esdTrackCuts->SetMinNClustersTPC(70);
+ esdTrackCuts->SetRequireTPCRefit();
+
+ // cut lambda
+ AliRsnCutV0 *cutLambda = new AliRsnCutV0("cutLambda", kLambda0, AliPID::kProton, AliPID::kPion);
+ cutLambda->SetESDtrackCuts(esdTrackCuts);
+ cutLambda->SetTolerance(0.01);
+ cutLambda->SetMaxDCAVertex(0.3);
+ cutLambda->SetMinCosPointingAngle(0.97);
+ cutLambda->SetMaxDaughtersDCA(0.5);
+ cutLambda->SetMaxRapidity(0.8);
+ cutLambda->SetAODTestFilterBit(aodFilterBit);
+ cutLambda->SetPIDCut1(pPIDCut);
+ cutLambda->SetPIDCut2(piPIDCut);
+ cutLambda->SetPIDCut3(piPIDCut);
+
+ // cut set
+ AliRsnCutSet *cutSetLambda = new AliRsnCutSet("setLambda", AliRsnTarget::kDaughter);
+ cutSetLambda->AddCut(cutLambda);
+ cutSetLambda->SetCutScheme(cutLambda->GetName());
+
+ // add to task
+ Int_t iCutLambda = task->AddTrackCuts(cutSetLambda);
+
+ // cut anti-AntiLambda
+ AliRsnCutV0 *cutAntiLambda = new AliRsnCutV0("cutAntiLambda", kLambda0Bar, AliPID::kProton, AliPID::kPion);
+ cutAntiLambda->SetESDtrackCuts(esdTrackCuts);
+ cutAntiLambda->SetTolerance(0.01);
+ cutAntiLambda->SetMaxDCAVertex(0.3);
+ cutAntiLambda->SetMinCosPointingAngle(0.97);
+ cutAntiLambda->SetMaxDaughtersDCA(0.5);
+ cutAntiLambda->SetMaxRapidity(0.8);
+ cutAntiLambda->SetAODTestFilterBit(aodFilterBit);
+ cutAntiLambda->SetPIDCut1(pPIDCut);
+ cutAntiLambda->SetPIDCut2(piPIDCut);
+ cutAntiLambda->SetPIDCut3(piPIDCut);
+
+ // cut set
+ AliRsnCutSet *cutSetAntiLambda = new AliRsnCutSet("setAntiLambda", AliRsnTarget::kDaughter);
+ cutSetAntiLambda->AddCut(cutAntiLambda);
+ cutSetAntiLambda->SetCutScheme(cutAntiLambda->GetName());
+ // add to task
+ Int_t iCutAntiLambda = task->AddTrackCuts(cutSetAntiLambda);
+
+ //######################################################################################################
+
+ //
+ // -- Values ------------------------------------------------------------------------------------
+ //
+
+ /* invariant mass */ Int_t imID = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
+ /* IM resolution */ Int_t resID = task->CreateValue(AliRsnMiniValue::kInvMassRes, kTRUE);
+ /* transv. momentum */ Int_t ptID = task->CreateValue(AliRsnMiniValue::kPt, kFALSE);
+ /* centrality */ Int_t centID = task->CreateValue(AliRsnMiniValue::kMult, kFALSE);
+ /* rapidity */ Int_t rapID = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
+
+ //
+ // -- Create all needed outputs -----------------------------------------------------------------
+ //
+
+ // use an array for more compact writing, which are different on mixing and charges
+ // [0] = unlike
+ // [1] = mixing
+ // [2] = like ++
+ // [3] = like --
+ Bool_t use [18] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
+ Bool_t useIM [18] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
+ TString name [18] = {"SigmaP" , "SigmaM" , "ASigmaP" , "ASigmaM" , "SigmaPmix", "SigmaMmix", "ASigmaPmix" , "ASigmaMmix" , "SigmaPt" , "SigmaMt" , "ASigmaPt" , "ASigmaMt" , "XiM" , "XiP" , "Lambda1520P" , "Lambda1520M" , "Lambda1520PBar", "Lambda1520MBar"};
+ TString comp [18] = {"PAIR" , "PAIR" , "PAIR" , "PAIR" , "MIX" , "MIX" , "MIX" , "MIX" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" , "TRUE" };
+ TString output [18] = {"HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" , "HIST" };
+ Char_t charge1 [18] = {'0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' , '0' };
+ Char_t charge2 [18] = {'+' , '-' , '-' , '+' , '+' , '-' , '-' , '+' , '+' , '-' , '-' , '+' , '-' , '+' , '+' , '-' , '-' , '+' };
+ Int_t cutID1 [18] = { iCutLambda, iCutLambda, iCutAntiLambda, iCutAntiLambda, iCutLambda, iCutLambda, iCutAntiLambda, iCutAntiLambda, iCutLambda, iCutLambda, iCutAntiLambda, iCutAntiLambda, iCutLambda , iCutAntiLambda , iCutLambda , iCutLambda , iCutAntiLambda , iCutAntiLambda };
+ Int_t cutID2 [18] = { iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi };
+ Int_t ipdg [18] = { 3224 , 3114 , -3224 , -3114 , 3224 , 3114 , -3224 , -3114 , 3224 , 3114 , -3224 , -3114 , 3312 , -3312 , 3124 , 3124 , -3124 , -3124 };
+ Double_t mass [18] = { 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.3828 , 1.3872 , 1.32171 , 1.32171 , 1.5195 , 1.5195 , 1.5195 , 1.5195 };
+
+ for (Int_t i = 0; i < 18; i++) {
+ if (!use[i]) continue;
+ if (!isPP) output[i] = "SPARSE";
+ // create output
+ AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastar_%s%s", name[i].Data(), suffix), output[i].Data(), comp[i].Data());
+ // selection settings
+ out->SetCutID(0, cutID1[i]);
+ out->SetCutID(1, cutID2[i]);
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetCharge(0, charge1[i]);
+ out->SetCharge(1, charge2[i]);
+ out->SetMotherPDG(ipdg[i]);
+ out->SetMotherMass(mass[i]);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // axis X: invmass
+ if (useIM[i])
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ // axis Y: transverse momentum
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ // axis Z: rapidity
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+ }
+
+ if (isMC) {
+
+ TString mode = "HIST";
+ if (!isPP) mode = "SPARSE";
+
+ // create output
+ AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarP_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetMotherPDG(3224);
+ out->SetMotherMass(1.3828);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+ // create output
+ AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarM_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetMotherPDG(3114);
+ out->SetMotherMass(1.3872);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+ // create output
+ AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarPBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetMotherPDG(-3224);
+ out->SetMotherMass(1.3828);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+
+ // create output
+ AliRsnMiniOutput *out = task->CreateOutput(Form("sigmastarMBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetMotherPDG(-3114);
+ out->SetMotherMass(1.3872);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+ // create output
+ AliRsnMiniOutput *out = task->CreateOutput(Form("XiP_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetMotherPDG(-3312);
+ out->SetMotherMass(1.32171);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+
+ // create output
+ AliRsnMiniOutput *out = task->CreateOutput(Form("XiM_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetMotherPDG(3312);
+ out->SetMotherMass(1.32171);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+
+ AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520P_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetCharge(0, 0);
+ out->SetCharge(1, 1);
+ out->SetMotherPDG(3124);
+ out->SetMotherMass(1.5195);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+ AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520M_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetCharge(0, 0);
+ out->SetCharge(1, -1);
+ out->SetMotherPDG(3124);
+ out->SetMotherMass(1.5195);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+
+ // create output
+ AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520PBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetCharge(0, 0);
+ out->SetCharge(1, 1);
+ out->SetMotherPDG(-3124);
+ out->SetMotherMass(1.5195);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+ AliRsnMiniOutput *out = task->CreateOutput(Form("Lambda1520MBar_TrueMC%s", suffix), mode.Data(), "MOTHER");
+ // selection settings
+ out->SetDaughter(0, AliRsnDaughter::kLambda);
+ out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetCharge(0, 0);
+ out->SetCharge(1, -1);
+ out->SetMotherPDG(-3124);
+ out->SetMotherMass(1.5195);
+ // pair cuts
+ out->SetPairCuts(cutsPair);
+ // binnings
+ out->AddAxis(imID, 800, 1.2, 2.0);
+ out->AddAxis(ptID, 100, 0.0, 10.0);
+ //out->AddAxis(rapID, 160, -0.8, 0.8);
+ if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
+
+
+
+ }
+
+ return kTRUE;
+}
+
+
+
+void AddMonitorOutput(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *lm=0)
+{
+
+ // Mass
+ AliRsnValueDaughter *axisMass = new AliRsnValueDaughter("m", AliRsnValueDaughter::kMass);
+ axisMass->SetBins(0.7,1.5,0.05);
+
+ // output: 2D histogram
+ AliRsnListOutput *outMonitorM = new AliRsnListOutput("M", AliRsnListOutput::kHistoDefault);
+ outMonitorM->AddValue(axisMass);
+
+ // add outputs to loop
+ if (mon) mon->Add(outMonitorM);
+ if (lm) lm->AddOutput(outMonitorM);
+
+}