-/
-// *** Configuration script for phi->KK analysis with 2010 runs ***
+//
+// *** Configuration script for D0 analysis ***
//
// A configuration script for RSN package needs to define the followings:
//
(
AliRsnMiniAnalysisTask *task,
Bool_t isPP,
- Bool_t isMC,
+ Bool_t isMC,
+ Bool_t monitor = kTRUE,
Float_t nsigmaTPCPi = 3.0,
Float_t nsigmaTPCKa = 3.0,
Float_t nsigmaTOFPi = 2.0,
Float_t trackDCAcutMin = 0.0,
Float_t trackDCAZcutMax = 2.0,
Int_t NTPCcluster = 70,
+ Double_t NTPCcrratio = 0.8,
Int_t minSPDclt = 0,
Double_t minpt = 0.15,
Short_t maxSisters = 2,
Bool_t ptdepPIDcut = kFALSE,
Bool_t checkFeedDown = kTRUE,
Bool_t checkQuark = kTRUE,
+ Bool_t doCalculationInMC = kTRUE,
UShort_t originDselection = 0,
Float_t mineta = -0.8,
Float_t maxeta = 0.8,
// integrated pion cut
AliRsnCutDaughterD0 *cutPi = new AliRsnCutDaughterD0("cutPionForD0", AliPID::kPion);
+ //cutPi->SetNoPID(kTRUE);
cutPi->SetTPCPionPIDCut(nsigmaTPCPi);
cutPi->SetTOFPionPIDCut(nsigmaTOFPi);
cutPi->SetPtDependentPIDCut(ptdepPIDcut);
if(maxDCAcutFixed)cutQuality->SetDCARmax(trackDCAcutMax);
else cutQuality->SetDCARPtFormula(formula);
if(minDCAcutFixed) cutQuality->SetDCARmin(trackDCAcutMin);
- else cutQuality->SetDCARPtFormulaMin(formulaMin);
- cutQuality->SetTPCminNClusters(NTPCcluster);
+ else cutQuality->SetDCARPtFormulaMin(formulaMin);
+ cutQuality->SetTPCminNClusters(NTPCcluster);
+ //if(!isPP)cutQuality->SetTPCminNClusters(NTPCcluster);
+ //if(isPP)cutQuality->SetMinNCrossedRowsTPC(NTPCcluster,kTRUE);
+ //if(isPP)cutQuality->SetMinNCrossedRowsOverFindableClsTPC(NTPCcrratio,kTRUE);
cutQuality->SetPtRange(minpt,1E20);
cutQuality->SetEtaRange(mineta, maxeta);
cutQuality->SetDCAZmax(trackDCAZcutMax);
cutQuality->SetSPDminNClusters(minSPDclt);
cutQuality->SetITSminNClusters(0);
- cutQuality->SetITSmaxChi2(1E+20);
- cutQuality->SetTPCmaxChi2(4.0);
+ cutQuality->SetITSmaxChi2(1E20);
+ cutQuality->SetTPCmaxChi2(1E20);
cutQuality->SetRejectKinkDaughters();
cutQuality->Print();
// integrated kaon cut
AliRsnCutDaughterD0 *cutK = new AliRsnCutDaughterD0("cutKaonForD0", AliPID::kKaon);
+ //cutK->SetNoPID(kTRUE);
cutK->SetTPCKaonPIDCut(nsigmaTPCKa);
cutK->SetTOFKaonPIDCut(nsigmaTOFKa);
cutK->SetPtDependentPIDCut(ptdepPIDcut);
if(minDCAcutFixed) cutQuality->SetDCARmin(trackDCAcutMin);
else cutQuality->SetDCARPtFormulaMin(formulaMin);
cutQuality->SetTPCminNClusters(NTPCcluster);
+ //if(!isPP)cutQuality->SetTPCminNClusters(NTPCcluster);
+ //if(isPP)cutQuality->SetMinNCrossedRowsTPC(NTPCcluster,kTRUE);
+ //if(isPP)cutQuality->SetMinNCrossedRowsOverFindableClsTPC(NTPCcrratio,kTRUE);
cutQuality->SetPtRange(minpt,1E20);
cutQuality->SetEtaRange(mineta, maxeta);
cutQuality->SetDCAZmax(trackDCAZcutMax);
cutQuality->SetSPDminNClusters(minSPDclt);
cutQuality->SetITSminNClusters(0);
- cutQuality->SetITSmaxChi2(1E+20);
- cutQuality->SetTPCmaxChi2(4.0);
+ cutQuality->SetITSmaxChi2(1E20);
+ cutQuality->SetTPCmaxChi2(1E20);
cutQuality->SetRejectKinkDaughters();
cutQuality->Print();
// add to task
Int_t iCutK = task->AddTrackCuts(cutSetK);
+
+
+
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////
+ // Cut set for mothers -- To be used only for the efficiency evaluation when using the charm enriched sample
+ /*
+ AliRsnCutDaughterD0 *cutPi_mother = new AliRsnCutDaughterD0("cutPionForD0_MC", AliPID::kPion);
+ cutPi_mother->SetIsCheckOnMother(kTRUE);
+ cutPi_mother->SetNoPID(kTRUE);
+ cutPi_mother->SetTPCPionPIDCut(1E20);
+ cutPi_mother->SetTOFPionPIDCut(1E20);
+ cutPi_mother->SetPtDependentPIDCut(kFALSE);
+ AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi_mother->CutQuality();
+ cutQuality->SetCheckOnlyFilterBit(kFALSE);
+ cutQuality->SetAODTestFilterBit(-1);
+ if(maxDCAcutFixed)cutQuality->SetDCARmax(1E20);
+ else cutQuality->SetDCARPtFormula("");
+ if(minDCAcutFixed) cutQuality->SetDCARmin(0);
+ else cutQuality->SetDCARPtFormulaMin("");
+ if(!isPP)cutQuality->SetTPCminNClusters(0);
+ if(isPP)cutQuality->SetMinNCrossedRowsTPC(0,kTRUE);
+ if(isPP)cutQuality->SetMinNCrossedRowsOverFindableClsTPC(0,kTRUE);
+ cutQuality->SetPtRange(0,1E20);
+ cutQuality->SetEtaRange(-1E20, 1E20);
+ cutQuality->SetDCAZmax(1E20);
+ cutQuality->SetSPDminNClusters(0);
+ cutQuality->SetITSminNClusters(0);
+ cutQuality->SetITSmaxChi2(1E20);
+ cutQuality->SetTPCmaxChi2(1E20);
+ cutQuality->SetRejectKinkDaughters();
+ cutQuality->Print();
+
+
+ // cut set
+ AliRsnCutSet *cutSetPi_mother = new AliRsnCutSet("setPionD0_mother", AliRsnTarget::kDaughter);
+ cutSetPi_mother->AddCut(cutPi_mother);
+ cutSetPi_mother->SetCutScheme(cutPi_mother->GetName());
+ // add to task
+ Int_t iCutPi_mother = task->AddTrackCuts(cutSetPi_mother);
+
+
+ AliRsnCutDaughterD0 *cutK_mother = new AliRsnCutDaughterD0("cutKaonForD0_MC", AliPID::kKaon);
+ cutK_mother->SetIsCheckOnMother(kTRUE);
+ cutK_mother->SetNoPID(kTRUE);
+ cutK_mother->SetTPCKaonPIDCut(1E20);
+ cutK_mother->SetTOFKaonPIDCut(1E20);
+ cutK_mother->SetPtDependentPIDCut(kFALSE);
+ AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutK_mother->CutQuality();
+ cutQuality->SetCheckOnlyFilterBit(kFALSE);
+ cutQuality->SetAODTestFilterBit(-1);
+ if(maxDCAcutFixed)cutQuality->SetDCARmax(1E20);
+ else cutQuality->SetDCARPtFormula("");
+ if(minDCAcutFixed) cutQuality->SetDCARmin(0);
+ else cutQuality->SetDCARPtFormulaMin("");
+ if(!isPP)cutQuality->SetTPCminNClusters(0);
+ if(isPP)cutQuality->SetMinNCrossedRowsTPC(0,kTRUE);
+ if(isPP)cutQuality->SetMinNCrossedRowsOverFindableClsTPC(0,kTRUE);
+ cutQuality->SetPtRange(0,1E20);
+ cutQuality->SetEtaRange(-1E20, 1E20);
+ cutQuality->SetDCAZmax(1E20);
+ cutQuality->SetSPDminNClusters(0);
+ cutQuality->SetITSminNClusters(0);
+ cutQuality->SetITSmaxChi2(1E20);
+ cutQuality->SetTPCmaxChi2(1E20);
+ cutQuality->SetRejectKinkDaughters();
+ cutQuality->Print();
+
+
+ // cut set
+ AliRsnCutSet *cutSetK_mother = new AliRsnCutSet("setKaonD0_mother", AliRsnTarget::kDaughter);
+ cutSetK_mother->AddCut(cutK_mother);
+ cutSetK_mother->SetCutScheme(cutK_mother->GetName());
+ // add to task
+ Int_t iCutK_mother = task->AddTrackCuts(cutSetK_mother);
+ */
+
+ ////////////////////////////////////////////////////////////////////////////////////////////////
// -- Values ------------------------------------------------------------------------------------
/* invariant mass */ Int_t imID = task->CreateValue(AliRsnMiniValue::kInvMass, kFALSE);
// [1] = mixing
// [2] = like ++
// [3] = like --
- Bool_t use [8] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
- Bool_t useIM [8] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
- TString name [8] = {"Unlike1", "Unlike2", "Mixing1", "Mixing2", "RotateK1", "RotateK2", "LikePP" , "LikeMM" };
- TString comp [8] = {"PAIR" , "PAIR" , "MIX" , "MIX" , "ROTATE1" , "ROTATE1" , "PAIR" , "PAIR" };
- TString output [8] = {"SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" };
- Char_t charge1 [8] = {'-' , '+' , '-' , '+' , '-' , '+' , '+' , '-' };
- Char_t charge2 [8] = {'+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' };
- Int_t cutID1 [8] = { iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK };
- Int_t cutID2 [8] = { iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi };
- Int_t ipdg [8] = { 421 , -421 , 421 , -421 , 421 , -421 , 421 , -421 };
- Double_t mass [8] = { 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 };
+
+
+ if(!isMC || doCalculationInMC == kTRUE){
+
+ Bool_t use [8] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
+ Bool_t useIM [8] = { 1 , 1 , 1 , 1 , 1 , 1 , 1 , 1 };
+ TString name [8] = {"Unlike1", "Unlike2", "Mixing1", "Mixing2", "RotateK1", "RotateK2", "LikePP" , "LikeMM"};
+ TString comp [8] = {"PAIR" , "PAIR" , "MIX" , "MIX" , "ROTATE1" , "ROTATE1" , "PAIR" , "PAIR" };
+ TString output [8] = {"SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE" , "SPARSE"};
+ Char_t charge1 [8] = {'-' , '+' , '-' , '+' , '-' , '+' , '+' , '-' };
+ Char_t charge2 [8] = {'+' , '-' , '+' , '-' , '+' , '-' , '+' , '-' };
+ Int_t cutID1 [8] = { iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK , iCutK };
+ Int_t cutID2 [8] = { iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi , iCutPi };
+ Int_t ipdg [8] = { 421 , -421 , 421 , -421 , 421 , -421 , 421 , -421 };
+ Double_t mass [8] = { 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486 , 1.86486};
for (Int_t i = 0; i < 8; i++) {
if (!use[i]) continue;
else out->AddAxis(centID, 400, 0.0, 400.0);
}
+ }
+ if(monitor == kTRUE){
AddMonitorOutput_PionEta(cutSetPi->GetMonitorOutput());
AddMonitorOutput_PionY(cutSetPi->GetMonitorOutput());
AddMonitorOutput_PionMinPt(cutSetPi->GetMonitorOutput());
AddMonitorOutput_KaonTPC_PIDCut(cutSetK->GetMonitorOutput());
AddMonitorOutput_KaonTOF_PIDCut(cutSetK->GetMonitorOutput());
AddMonitorOutput_KaonNTPC(cutSetK->GetMonitorOutput());
+ }
+
if (isMC) {
// create output
AliRsnMiniOutput *out = task->CreateOutput("D0_True2", mode.Data(), "TRUE");
// selection settings
- out->SetCharge(0, '+');
- out->SetCharge(1, '-');
+ out->SetCutID(0, iCutK);
+ out->SetCutID(1, iCutPi);
out->SetDaughter(0, AliRsnDaughter::kKaon);
out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetCharge(0, '+');
+ out->SetCharge(1, '-');
out->SetMotherPDG(-421);
out->SetMotherMass(1.86486);
// pair cuts
else out->AddAxis(centID, 400, 0.0, 400.0);
- // INVARIANT RESOLUTION
+ // GENERATED MOTHERS
TString mode = "SPARSE";
// create output
- AliRsnMiniOutput *out = task->CreateOutput("D0_Res1", mode.Data(), "TRUE");
+ AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC1", mode.Data(), "MOTHER");
// selection settings
out->SetDaughter(0, AliRsnDaughter::kKaon);
out->SetDaughter(1, AliRsnDaughter::kPion);
- out->SetCharge(0, '-');
- out->SetCharge(1, '+');
out->SetMotherPDG(421);
out->SetMotherMass(1.86486);
// pair cuts
- out->SetPairCuts(cutsPair);
- out->SetMaxNSisters(maxSisters);
- out->SetCheckMomentumConservation(checkP);
- out->SetCheckFeedDown(checkFeedDown);
- out->SetRejectCandidateIfNotFromQuark(checkQuark);
- out->SetDselection(originDselection);
+ out->SetPairCuts(cutsPairY);
// binnings
- out->AddAxis(resID, 200, -0.02, 0.02);
+ out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
out->AddAxis(ptID, 200, 0.0, 20.0);
//out->AddAxis(yID, 100, -1, 1);
- //out->AddAxis(dcapID, 100, -0.001, 0.001);
- //out->AddAxis(nsistID, 10, 0, 5);
if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
else out->AddAxis(centID, 400, 0.0, 400.0);
// create output
- AliRsnMiniOutput *out = task->CreateOutput("D0_Res2", mode.Data(), "TRUE");
+ AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC2", mode.Data(), "MOTHER");
// selection settings
out->SetDaughter(0, AliRsnDaughter::kKaon);
out->SetDaughter(1, AliRsnDaughter::kPion);
- out->SetCharge(0, '+');
- out->SetCharge(1, '-');
out->SetMotherPDG(-421);
out->SetMotherMass(1.86486);
// pair cuts
- out->SetPairCuts(cutsPair);
- out->SetMaxNSisters(maxSisters);
- out->SetCheckMomentumConservation(checkP);
- out->SetCheckFeedDown(checkFeedDown);
- out->SetRejectCandidateIfNotFromQuark(checkQuark);
- out->SetDselection(originDselection);
+ out->SetPairCuts(cutsPairY);
// binnings
- out->AddAxis(resID, 200, -0.02, 0.02);
+ out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
out->AddAxis(ptID, 200, 0.0, 20.0);
//out->AddAxis(yID, 100, -1, 1);
- //out->AddAxis(dcapID, 100, -0.001, 0.001);
- //out->AddAxis(nsistID, 10, 0, 5);
if (!isPP) out->AddAxis(centID, 100, 0.0, 100.0);
else out->AddAxis(centID, 400, 0.0, 400.0);
- // GENERATED MOTHERS
-
+ // GENERATED MOTHERS IN THE ACCEPTANCE
+ /*
TString mode = "SPARSE";
// create output
- AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC1", mode.Data(), "MOTHER");
+ AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC1_Acc", mode.Data(), "TRUE");
// selection settings
+ out->SetCutID(0, iCutK_mother);
+ out->SetCutID(1, iCutPi_mother);
out->SetDaughter(0, AliRsnDaughter::kKaon);
out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetCharge(0, '-');
+ out->SetCharge(1, '+');
out->SetMotherPDG(421);
out->SetMotherMass(1.86486);
// pair cuts
out->SetPairCuts(cutsPairY);
+ out->SetMaxNSisters(maxSisters);
+ out->SetCheckMomentumConservation(checkP);
+ out->SetCheckFeedDown(checkFeedDown);
+ out->SetRejectCandidateIfNotFromQuark(checkQuark);
+ out->SetDselection(originDselection);
// binnings
out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
out->AddAxis(ptID, 200, 0.0, 20.0);
else out->AddAxis(centID, 400, 0.0, 400.0);
// create output
- AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC2", mode.Data(), "MOTHER");
+ AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC2_Acc", mode.Data(), "TRUE");
// selection settings
+ out->SetCutID(0, iCutK_mother);
+ out->SetCutID(1, iCutPi_mother);
out->SetDaughter(0, AliRsnDaughter::kKaon);
out->SetDaughter(1, AliRsnDaughter::kPion);
+ out->SetCharge(0, '+');
+ out->SetCharge(1, '-');
out->SetMotherPDG(-421);
out->SetMotherMass(1.86486);
// pair cuts
out->SetPairCuts(cutsPairY);
+ out->SetMaxNSisters(maxSisters);
+ out->SetCheckMomentumConservation(checkP);
+ out->SetCheckFeedDown(checkFeedDown);
+ out->SetRejectCandidateIfNotFromQuark(checkQuark);
+ out->SetDselection(originDselection);
// binnings
out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
out->AddAxis(ptID, 200, 0.0, 20.0);
}
-
+ */
return kTRUE;
}