]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
Updated macros for Sigma* analysis + debug option enabled in AliRsnCutV0 (M.Venaruzzo...
authorfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 28 Jan 2013 11:41:15 +0000 (11:41 +0000)
committerfbellini <fbellini@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 28 Jan 2013 11:41:15 +0000 (11:41 +0000)
PWGLF/RESONANCES/AliRsnCutV0.cxx
PWGLF/RESONANCES/macros/lego_train/AddRsnTaskTrain.C
PWGLF/RESONANCES/macros/lego_train/RsnQualityCut.C
PWGLF/RESONANCES/macros/mini/AddAnalysisTaskSigmaStarPbPb.C [new file with mode: 0644]
PWGLF/RESONANCES/macros/mini/ConfigSigmaStar.C
PWGLF/RESONANCES/macros/mini/ConfigSigmaStarPbPb.C [new file with mode: 0644]

index 78a6c80f2558a0e2d157ecc1bef0a1ad613ccf61..c31614e4d4637bd062943ae2c20699ff36d0222c 100644 (file)
@@ -365,7 +365,7 @@ Bool_t AliRsnCutV0::CheckAOD(AliAODv0 *v0)
 
 
 
-   AliDebugClass(1, Form("fESDtrackCuts=%p",fESDtrackCuts));
+   /*AliDebugClass(1, Form("fESDtrackCuts=%p",fESDtrackCuts));
    if (fESDtrackCuts) { // use fESDtrackCuts to retrieve cuts values
 
 
@@ -386,7 +386,7 @@ Bool_t AliRsnCutV0::CheckAOD(AliAODv0 *v0)
       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) {
index b404adcad8f141cf9c7ead00ca99df5079367683..9ecfd5729447ce275d25e5996044a97762c504e1 100644 (file)
@@ -40,6 +40,13 @@ AliAnalysisTask *AddRsnTaskTrain(const char *commonStr,const char *rsnStr,const
    // 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;
 
index 2b4f8d2dba31a04a1967bb01e0799b6d4d7a9f26..f18c6ed5c90bb14462c5cb2101f507ebd1941d44 100644 (file)
@@ -39,7 +39,35 @@ AliESDtrackCuts *RsnQualityCut(TString cut="pp_LHC11_p4_120") {
       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);
 
@@ -60,7 +88,8 @@ AliESDtrackCuts *RsnQualityCut(TString cut="pp_LHC11_p4_120") {
       esdTrackCuts->SetMaxDCAToVertexZ(2);
       esdTrackCuts->SetDCAToVertex2D(kFALSE);
       esdTrackCuts->SetRequireSigmaToVertex(kFALSE);
-      esdTrackCuts->SetMaxChi2PerClusterITS(36)
+      esdTrackCuts->SetMaxChi2PerClusterITS(36);
+
    }
 
    return esdTrackCuts;
diff --git a/PWGLF/RESONANCES/macros/mini/AddAnalysisTaskSigmaStarPbPb.C b/PWGLF/RESONANCES/macros/mini/AddAnalysisTaskSigmaStarPbPb.C
new file mode 100644 (file)
index 0000000..5648588
--- /dev/null
@@ -0,0 +1,143 @@
+/***************************************************************************
+              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;
+}
index 31c746a9172923892d69b233399eb41623e3d9e4..89cb1230fd9f093cb01406fe360795d7c4ea74cd 100644 (file)
@@ -45,7 +45,7 @@ Bool_t ConfigSigmaStar
    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();
@@ -92,133 +92,6 @@ Bool_t ConfigSigmaStar
    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);
-   
 
    
    //######################################################################################################  
@@ -283,87 +156,6 @@ Bool_t ConfigSigmaStar
     } 
    
    
-   //############################################################################
-   //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";
diff --git a/PWGLF/RESONANCES/macros/mini/ConfigSigmaStarPbPb.C b/PWGLF/RESONANCES/macros/mini/ConfigSigmaStarPbPb.C
new file mode 100644 (file)
index 0000000..0ec3c7c
--- /dev/null
@@ -0,0 +1,343 @@
+//
+// *** 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);
+  
+}