ROOT logo
//
// *** Configuration script for D0 analysis ***
// 
// 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 ConfigD0
(  
   AliRsnMiniAnalysisTask *task, 
   Bool_t                  isPP,
   Bool_t                  isMC,
   Bool_t                  monitor = kTRUE,
   Bool_t      		   centortracklets = kTRUE, 
   Bool_t      		   sanityhistos = kTRUE, 
   Float_t         	   nsigmaTPCPi = 3.0,
   Float_t         	   nsigmaTPCKa = 3.0,
   Float_t         	   nsigmaTOFPi = 2.0,
   Float_t         	   nsigmaTOFKa = 2.0,
   Int_t                   aodFilterBit = 5,
   Float_t         	   trackDCAcutMax = 7.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                  checkP = kTRUE,
   Bool_t      		   useNTPCclt = kTRUE,
   Bool_t                  minDCAcutFixed = kFALSE,
   Bool_t                  maxDCAcutFixed = kFALSE,
   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,
   Float_t		   min_inv_mass = 0.6,
   Float_t		   max_inv_mass = 2.2,
   Int_t                   bins = 320,
   const char      	  *suffix,
   AliRsnCutSet           *cutsPairY,
   AliRsnCutSet           *cutsPair
)
{
   // manage suffix
   if (strlen(suffix) > 0) suffix = Form("_%s", suffix);
   
   TString s = ""; s+=trackDCAcutMax; s+="*(0.0015+0.0050/pt^1.01)";

   const char *formula = s;
   
   TString s2 = ""; s2+=trackDCAcutMin; s2+="*(0.0015+0.0050/pt^1.01)";

   const char *formulaMin = s2;
   
   
   // 
   // -- Define track cuts -------------------------------------------------------------------------
   //
   
   // integrated pion cut
   AliRsnCutDaughterD0 *cutPi = new AliRsnCutDaughterD0("cutPionForD0", AliPID::kPion);
   //cutPi->SetNoPID(kTRUE);
   cutPi->SetTPCPionPIDCut(nsigmaTPCPi);
   cutPi->SetTOFPionPIDCut(nsigmaTOFPi);
   cutPi->SetPtDependentPIDCut(ptdepPIDcut);
   AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutPi->CutQuality();
   cutQuality->SetCheckOnlyFilterBit(kFALSE);
   cutQuality->SetAODTestFilterBit(aodFilterBit);
   if(maxDCAcutFixed)cutQuality->SetDCARmax(trackDCAcutMax);	         
   else cutQuality->SetDCARPtFormula(formula);
   if(minDCAcutFixed) cutQuality->SetDCARmin(trackDCAcutMin);
   else cutQuality->SetDCARPtFormulaMin(formulaMin);
   if(useNTPCclt)cutQuality->SetTPCminNClusters(NTPCcluster);
   if(!useNTPCclt)cutQuality->SetMinNCrossedRowsTPC(NTPCcluster,kTRUE);
   if(!useNTPCclt)cutQuality->SetMinNCrossedRowsOverFindableClsTPC(NTPCcrratio,kTRUE);
   cutQuality->SetPtRange(minpt,1E20);
   cutQuality->SetEtaRange(mineta, maxeta);
   cutQuality->SetDCAZmax(trackDCAZcutMax);
   cutQuality->SetSPDminNClusters(minSPDclt);
   cutQuality->SetITSminNClusters(0);
   cutQuality->SetITSmaxChi2(1E20);
   cutQuality->SetTPCmaxChi2(1E20);
   cutQuality->SetRejectKinkDaughters();
   cutQuality->Print();
  	         

   
   // cut set
   AliRsnCutSet *cutSetPi = new AliRsnCutSet("setPionD0", AliRsnTarget::kDaughter);
   cutSetPi->AddCut(cutPi);
   cutSetPi->SetCutScheme(cutPi->GetName());
   // add to task
   Int_t iCutPi = task->AddTrackCuts(cutSetPi);
   
   
   
   // integrated kaon cut
   AliRsnCutDaughterD0 *cutK = new AliRsnCutDaughterD0("cutKaonForD0", AliPID::kKaon);
   //cutK->SetNoPID(kTRUE);
   cutK->SetTPCKaonPIDCut(nsigmaTPCKa);
   cutK->SetTOFKaonPIDCut(nsigmaTOFKa);
   cutK->SetPtDependentPIDCut(ptdepPIDcut);	
   AliRsnCutTrackQuality *cutQuality = (AliRsnCutTrackQuality*) cutK->CutQuality();
   cutQuality->SetCheckOnlyFilterBit(kFALSE);
   cutQuality->SetAODTestFilterBit(aodFilterBit);
   if(maxDCAcutFixed)cutQuality->SetDCARmax(trackDCAcutMax);	         
   else cutQuality->SetDCARPtFormula(formula);
   if(minDCAcutFixed) cutQuality->SetDCARmin(trackDCAcutMin);
   else cutQuality->SetDCARPtFormulaMin(formulaMin);
   if(useNTPCclt)cutQuality->SetTPCminNClusters(NTPCcluster);
   if(!useNTPCclt)cutQuality->SetMinNCrossedRowsTPC(NTPCcluster,kTRUE);
   if(!useNTPCclt)cutQuality->SetMinNCrossedRowsOverFindableClsTPC(NTPCcrratio,kTRUE);
   cutQuality->SetPtRange(minpt,1E20);
   cutQuality->SetEtaRange(mineta, maxeta);
   cutQuality->SetDCAZmax(trackDCAZcutMax);
   cutQuality->SetSPDminNClusters(minSPDclt);
   cutQuality->SetITSminNClusters(0);
   cutQuality->SetITSmaxChi2(1E20);
   cutQuality->SetTPCmaxChi2(1E20);
   cutQuality->SetRejectKinkDaughters();
   cutQuality->Print();
	
   
   
   // cut set
   AliRsnCutSet *cutSetK = new AliRsnCutSet("setKaonD0", AliRsnTarget::kDaughter);
   cutSetK->AddCut(cutK);
   cutSetK->SetCutScheme(cutK->GetName());
   // add to task
   Int_t iCutK = task->AddTrackCuts(cutSetK);
   
   
   
   ////////////////////////////////////////////////////////////////////////////////////////////////
  
  // -- 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);
  /* pseudorapidity     */ Int_t etaID      = task->CreateValue(AliRsnMiniValue::kEta, kFALSE);
  /* rapidity           */ Int_t yID        = task->CreateValue(AliRsnMiniValue::kY, kFALSE);
  /* dca product        */ Int_t dcapID     = task->CreateValue(AliRsnMiniValue::kDCAproduct, kFALSE);
  /* first daughter pt  */ Int_t daug1ptID  = task->CreateValue(AliRsnMiniValue::kFirstDaughterPt, kFALSE);
  /* second daughter pt */ Int_t daug2ptID  = task->CreateValue(AliRsnMiniValue::kSecondDaughterPt, kFALSE);
  /* first daughter dca */ Int_t daug1dcaID = task->CreateValue(AliRsnMiniValue::kFirstDaughterDCA, kFALSE);
  /* second daughter dca*/ Int_t daug2dcaID = task->CreateValue(AliRsnMiniValue::kSecondDaughterDCA, kFALSE);
  /* number of Sisters  */ Int_t nsistID    = task->CreateValue(AliRsnMiniValue::kNSisters, kFALSE);
  /* number of trackl.  */ Int_t trackletsID = task->CreateValue(AliRsnMiniValue::kTracklets, 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 --
   
   
   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;
      
      // create output
      AliRsnMiniOutput *out = task->CreateOutput(Form("D0_%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::kKaon);
      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 (or resolution)
      //if (useIM[i]) 
         out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
      //else
      //   out->AddAxis(resID, 200, -0.02, 0.02);
      // axis Y: transverse momentum
      out->AddAxis(ptID, 200, 0.0, 20.0);
      
      // axiz Z: pseudorapidity
      //if(sanityhistos==kTRUE) out->AddAxis(etaID, 100, -1, 1);
         
      
      if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       		   else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
      else out->AddAxis(centID, 400, 0.0, 400.0);
   }

   if(sanityhistos==kTRUE){

   // SANITY CHECK HISTOS
   
   TString mode = "SPARSE";
   
   // create output
   AliRsnMiniOutput *out = task->CreateOutput("D0_MixingPP", mode.Data(), "MIX");
   // selection settings
   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
   out->SetPairCuts(cutsPair);
  
   // binnings
   out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
   out->AddAxis(ptID, 200, 0.0, 20.0);
   //out->AddAxis(etaID, 100, -1, 1);


   if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       		else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
   else out->AddAxis(centID, 400, 0.0, 400.0);
   
   // create output
   AliRsnMiniOutput *out = task->CreateOutput("D0_MixingMM", mode.Data(), "MIX");
   // selection settings
   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
   out->SetPairCuts(cutsPair);
   
   // binnings
   out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
   out->AddAxis(ptID, 200, 0.0, 20.0);
   //out->AddAxis(etaID, 100, -1, 1);

   if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       		else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
   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_PionDCA(cutSetPi->GetMonitorOutput());
   AddMonitorOutput_PionTPC_PIDCut(cutSetPi->GetMonitorOutput());
   AddMonitorOutput_PionTOF_PIDCut(cutSetPi->GetMonitorOutput());
   AddMonitorOutput_PionNTPC(cutSetPi->GetMonitorOutput());
   
   AddMonitorOutput_KaonEta(cutSetK->GetMonitorOutput());
   AddMonitorOutput_KaonY(cutSetK->GetMonitorOutput());
   AddMonitorOutput_KaonMinPt(cutSetK->GetMonitorOutput());
   AddMonitorOutput_KaonDCA(cutSetK->GetMonitorOutput());
   AddMonitorOutput_KaonTPC_PIDCut(cutSetK->GetMonitorOutput());
   AddMonitorOutput_KaonTOF_PIDCut(cutSetK->GetMonitorOutput());
   AddMonitorOutput_KaonNTPC(cutSetK->GetMonitorOutput());
   }
   
   
   if (isMC) {
   
   // TRUE RECONSTRUCTED PAIRS
   
   TString mode = "SPARSE";
   
   // create output
   AliRsnMiniOutput *out = task->CreateOutput("D0_True1", mode.Data(), "TRUE");
   // selection settings
   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
   out->SetPairCuts(cutsPair);
   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);
   //out->AddAxis(yID, 100, -1, 1);
   //out->AddAxis(dcapID, 100, -0.001, 0.001);
   //out->AddAxis(nsistID, 10, 0, 5);

   if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       		else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
   else out->AddAxis(centID, 400, 0.0, 400.0);
   
   // create output
   AliRsnMiniOutput *out = task->CreateOutput("D0_True2", mode.Data(), "TRUE");
   // selection settings
   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
   out->SetPairCuts(cutsPair);
   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);
   //out->AddAxis(yID, 100, -1, 1);
   //out->AddAxis(dcapID, 100, -0.001, 0.001);
   //out->AddAxis(nsistID, 10, 0, 5);

   if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       		else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
   else out->AddAxis(centID, 400, 0.0, 400.0);
   
   
   // GENERATED MOTHERS
   
   TString mode = "SPARSE";
   
   // create output
   AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC1", mode.Data(), "MOTHER");
   // selection settings
   out->SetDaughter(0, AliRsnDaughter::kKaon);
   out->SetDaughter(1, AliRsnDaughter::kPion);
   out->SetMotherPDG(421);
   out->SetMotherMass(1.86486);
   // pair cuts
   out->SetPairCuts(cutsPairY);
   // binnings
   out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
   out->AddAxis(ptID, 200, 0.0, 20.0);
   //out->AddAxis(yID, 100, -1, 1);

   if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       		else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
   else out->AddAxis(centID, 400, 0.0, 400.0);
   
   // create output
   AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC2", mode.Data(), "MOTHER");
   // selection settings
   out->SetDaughter(0, AliRsnDaughter::kKaon);
   out->SetDaughter(1, AliRsnDaughter::kPion);
   out->SetMotherPDG(-421);
   out->SetMotherMass(1.86486);
   // pair cuts
   out->SetPairCuts(cutsPairY);
   // binnings
   out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
   out->AddAxis(ptID, 200, 0.0, 20.0);
   //out->AddAxis(yID, 100, -1, 1);

   if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       		else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
   else out->AddAxis(centID, 400, 0.0, 400.0);
   
   
   // GENERATED MOTHERS IN THE ACCEPTANCE
   
   TString mode = "SPARSE";
   
   // create output
   AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC_InAcc1", mode.Data(), "MOTHER_IN_ACC");
   // selection settings
   out->SetDaughter(0, AliRsnDaughter::kKaon);
   out->SetDaughter(1, AliRsnDaughter::kPion);
   out->SetMotherPDG(421);
   out->SetMotherMass(1.86486);
   // pair cuts
   out->SetPairCuts(cutsPairY);
   // binnings
   out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
   out->AddAxis(ptID, 200, 0.0, 20.0);
   //out->AddAxis(yID, 100, -1, 1);

  if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       	       else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
   else out->AddAxis(centID, 400, 0.0, 400.0);
   
   // create output
   AliRsnMiniOutput *out = task->CreateOutput("D0_TrueMC_InAcc2", mode.Data(), "MOTHER_IN_ACC");
   // selection settings
   out->SetDaughter(0, AliRsnDaughter::kKaon);
   out->SetDaughter(1, AliRsnDaughter::kPion);
   out->SetMotherPDG(-421);
   out->SetMotherMass(1.86486);
   // pair cuts
   out->SetPairCuts(cutsPairY);
   // binnings
   out->AddAxis(imID, bins, min_inv_mass, max_inv_mass);
   out->AddAxis(ptID, 200, 0.0, 20.0);
   //out->AddAxis(yID, 100, -1, 1);

   if (!isPP)  {if(!centortracklets) out->AddAxis(centID, 100, 0.0, 100.0);
       		else out->AddAxis(trackletsID, 400, -0.5, 400.0);}
   else out->AddAxis(centID, 400, 0.0, 400.0);
   
   
   }


   return kTRUE;
}


void AddMonitorOutput_PionEta(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *peta=0)
{

   // PionEta
   AliRsnValueDaughter *axisPionEta = new AliRsnValueDaughter("pion_eta", AliRsnValueDaughter::kEta);
   axisPionEta->SetBins(-1.0,1.0,0.05);

   // output: 2D histogram
   AliRsnListOutput *outMonitorPionEta = new AliRsnListOutput("Pion_Eta", AliRsnListOutput::kHistoDefault);
   outMonitorPionEta->AddValue(axisPionEta);

   // add outputs to loop
   if (mon) mon->Add(outMonitorPionEta);
   if (peta) peta->AddOutput(outMonitorPionEta);
  
}

void AddMonitorOutput_PionY(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *py=0)
{

   // PionY
   AliRsnValueDaughter *axisPionY = new AliRsnValueDaughter("pion_y", AliRsnValueDaughter::kY);
   axisPionY->SetBins(-1.0,1.0,0.05);

   // output: 2D histogram
   AliRsnListOutput *outMonitorPionY = new AliRsnListOutput("Pion_Y", AliRsnListOutput::kHistoDefault);
   outMonitorPionY->AddValue(axisPionY);

   // add outputs to loop
   if (mon) mon->Add(outMonitorPionY);
   if (py) py->AddOutput(outMonitorPionY);
  
}

void AddMonitorOutput_PionMinPt(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *pmpt=0)
{

   // PionMinPt
   AliRsnValueDaughter *axisPionMinPt = new AliRsnValueDaughter("pion_minpt", AliRsnValueDaughter::kPt);
   axisPionMinPt->SetBins(0.0,1,0.05);

   // output: 2D histogram
   AliRsnListOutput *outMonitorPionMinPt = new AliRsnListOutput("Pion_MinPt", AliRsnListOutput::kHistoDefault);
   outMonitorPionMinPt->AddValue(axisPionMinPt);

   // add outputs to loop
   if (mon) mon->Add(outMonitorPionMinPt);
   if (pmpt) pmpt->AddOutput(outMonitorPionMinPt);
  
}

void AddMonitorOutput_PionDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *pdca=0)
{

   // PionDCA
   AliRsnValueDaughter *axisPionDCA = new AliRsnValueDaughter("pion_dca", AliRsnValueDaughter::kDCAXY);
   axisPionDCA->SetBins(-1.0,1,0.05);

   // output: 2D histogram
   AliRsnListOutput *outMonitorPionDCA = new AliRsnListOutput("Pion_DCA", AliRsnListOutput::kHistoDefault);
   outMonitorPionDCA->AddValue(axisPionDCA);

   // add outputs to loop
   if (mon) mon->Add(outMonitorPionDCA);
   if (pdca) pdca->AddOutput(outMonitorPionDCA);
  
}

void AddMonitorOutput_PionTPC_PIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piTPCPID=0)
{

   // Pion PID Cut
   AliRsnValueDaughter *axisPionTPCPIDCut = new AliRsnValueDaughter("pionTPCPID", AliRsnValueDaughter::kTPCnsigmaPi);
   axisPionTPCPIDCut->SetBins(0.0,5,0.1);

   // output: 2D histogram
   AliRsnListOutput *outMonitorPionTPCPIDCut = new AliRsnListOutput("Pion_TPC_PID_Cut", AliRsnListOutput::kHistoDefault);
   outMonitorPionTPCPIDCut->AddValue(axisPionTPCPIDCut);

   // add outputs to loop
   if (mon) mon->Add(outMonitorPionTPCPIDCut);
   if (piTPCPID) piTPCPID->AddOutput(outMonitorPionPIDCut);
  
}

void AddMonitorOutput_PionTOF_PIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piTOFPID=0)
{

   // Pion PID Cut
   AliRsnValueDaughter *axisPionTOFPIDCut = new AliRsnValueDaughter("pionTOFPID", AliRsnValueDaughter::kTOFnsigmaPi);
   axisPionTOFPIDCut->SetBins(0.0,5,0.1);

   // output: 2D histogram
   AliRsnListOutput *outMonitorPionTOFPIDCut = new AliRsnListOutput("Pion_TOF_PID_Cut", AliRsnListOutput::kHistoDefault);
   outMonitorPionTOFPIDCut->AddValue(axisPionTOFPIDCut);

   // add outputs to loop
   if (mon) mon->Add(outMonitorPionTOFPIDCut);
   if (piTOFPID) piTOFPID->AddOutput(outMonitorPionTOFPIDCut);
  
}

void AddMonitorOutput_PionNTPC(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *piNTPC=0)
{

   // Pion PID Cut
   AliRsnValueDaughter *axisPionNTPC = new AliRsnValueDaughter("pionNTPC", AliRsnValueDaughter::kNTPCclusters);
   axisPionNTPC->SetBins(0.0,200,1);

   // output: 2D histogram
   AliRsnListOutput *outMonitorPionNTPC = new AliRsnListOutput("Pion_NTPC", AliRsnListOutput::kHistoDefault);
   outMonitorPionNTPC->AddValue(axisPionNTPC);

   // add outputs to loop
   if (mon) mon->Add(outMonitorPionNTPC);
   if (piNTPC) piNTPC->AddOutput(outMonitorPionNTPC);
  
}

void AddMonitorOutput_KaonEta(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *keta=0)
{

   // KaonEta
   AliRsnValueDaughter *axisKaonEta = new AliRsnValueDaughter("kaon_eta", AliRsnValueDaughter::kEta);
   axisKaonEta->SetBins(-1.0,1.0,0.05);

   // output: 2D histogram
   AliRsnListOutput *outMonitorKaonEta = new AliRsnListOutput("Kaon_Eta", AliRsnListOutput::kHistoDefault);
   outMonitorKaonEta->AddValue(axisKaonEta);

   // add outputs to loop
   if (mon) mon->Add(outMonitorKaonEta);
   if (keta) keta->AddOutput(outMonitorKaonEta);
  
}

void AddMonitorOutput_KaonY(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *ky=0)
{

   // KaonY
   AliRsnValueDaughter *axisKaonY = new AliRsnValueDaughter("kaon_y", AliRsnValueDaughter::kY);
   axisKaonY->SetBins(-1.0,1.0,0.05);

   // output: 2D histogram
   AliRsnListOutput *outMonitorKaonY = new AliRsnListOutput("Kaon_Y", AliRsnListOutput::kHistoDefault);
   outMonitorKaonY->AddValue(axisKaonY);

   // add outputs to loop
   if (mon) mon->Add(outMonitorKaonY);
   if (ky) ky->AddOutput(outMonitorKaonY);
  
}

void AddMonitorOutput_KaonMinPt(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kmpt=0)
{

   // KaonMinPt
   AliRsnValueDaughter *axisKaonMinPt = new AliRsnValueDaughter("kaon_minpt", AliRsnValueDaughter::kPt);
   axisKaonMinPt->SetBins(0.0,1,0.05);

   // output: 2D histogram
   AliRsnListOutput *outMonitorKaonMinPt = new AliRsnListOutput("Kaon_MinPt", AliRsnListOutput::kHistoDefault);
   outMonitorKaonMinPt->AddValue(axisKaonMinPt);

   // add outputs to loop
   if (mon) mon->Add(outMonitorKaonMinPt);
   if (kmpt) kmpt->AddOutput(outMonitorKaonMinPt);
  
}

void AddMonitorOutput_KaonDCA(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kdca=0)
{

   // KaonDCA
   AliRsnValueDaughter *axisKaonDCA = new AliRsnValueDaughter("kaon_dca", AliRsnValueDaughter::kDCAXY);
   axisKaonDCA->SetBins(-1.0,1,0.05);

   // output: 2D histogram
   AliRsnListOutput *outMonitorKaonDCA = new AliRsnListOutput("Kaon_DCA", AliRsnListOutput::kHistoDefault);
   outMonitorKaonDCA->AddValue(axisKaonDCA);

   // add outputs to loop
   if (mon) mon->Add(outMonitorKaonDCA);
   if (kdca) kdca->AddOutput(outMonitorKaonDCA);
  
}

void AddMonitorOutput_KaonTPC_PIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kTPCPID=0)
{

   // Kaon TPC PID Cut
   AliRsnValueDaughter *axisKaonTPCPIDCut = new AliRsnValueDaughter("kaonTPCPID", AliRsnValueDaughter::kTPCnsigmaK);
   axisKaonTPCPIDCut->SetBins(0.0,5,0.1);

   // output: 2D histogram
   AliRsnListOutput *outMonitorKaonTPCPIDCut = new AliRsnListOutput("Kaon_TPC_PID_Cut", AliRsnListOutput::kHistoDefault);
   outMonitorKaonTPCPIDCut->AddValue(axisKaonTPCPIDCut);

   // add outputs to loop
   if (mon) mon->Add(outMonitorKaonTPCPIDCut);
   if (kTPCPID) kTPCPID->AddOutput(outMonitorKaonTPCPIDCut);
  
}

void AddMonitorOutput_KaonTOF_PIDCut(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kTOFPID=0)
{

   // Kaon TOF PID Cut
   AliRsnValueDaughter *axisKaonTOFPIDCut = new AliRsnValueDaughter("kaonTOFPID", AliRsnValueDaughter::kTOFnsigmaK);
   axisKaonTOFPIDCut->SetBins(0.0,5,0.1);

   // output: 2D histogram
   AliRsnListOutput *outMonitorKaonTOFPIDCut = new AliRsnListOutput("Kaon_TOF_PID_Cut", AliRsnListOutput::kHistoDefault);
   outMonitorKaonTOFPIDCut->AddValue(axisKaonTOFPIDCut);

   // add outputs to loop
   if (mon) mon->Add(outMonitorKaonTOFPIDCut);
   if (kTOFPID) kTOFPID->AddOutput(outMonitorKaonTOFPIDCut);
  
}

void AddMonitorOutput_KaonNTPC(TObjArray *mon=0,TString opt="",AliRsnLoopDaughter *kNTPC=0)
{

   // Kaon PID Cut
   AliRsnValueDaughter *axisKaonNTPC = new AliRsnValueDaughter("kaonNTPC", AliRsnValueDaughter::kNTPCclusters);
   axisKaonNTPC->SetBins(0.0,200,1);

   // output: 2D histogram
   AliRsnListOutput *outMonitorKaonNTPC = new AliRsnListOutput("Kaon_NTPC", AliRsnListOutput::kHistoDefault);
   outMonitorKaonNTPC->AddValue(axisKaonNTPC);

   // add outputs to loop
   if (mon) mon->Add(outMonitorKaonNTPC);
   if (kNTPC) kNTPC->AddOutput(outMonitorKaonNTPC);
  
}

 ConfigD0.C:1
 ConfigD0.C:2
 ConfigD0.C:3
 ConfigD0.C:4
 ConfigD0.C:5
 ConfigD0.C:6
 ConfigD0.C:7
 ConfigD0.C:8
 ConfigD0.C:9
 ConfigD0.C:10
 ConfigD0.C:11
 ConfigD0.C:12
 ConfigD0.C:13
 ConfigD0.C:14
 ConfigD0.C:15
 ConfigD0.C:16
 ConfigD0.C:17
 ConfigD0.C:18
 ConfigD0.C:19
 ConfigD0.C:20
 ConfigD0.C:21
 ConfigD0.C:22
 ConfigD0.C:23
 ConfigD0.C:24
 ConfigD0.C:25
 ConfigD0.C:26
 ConfigD0.C:27
 ConfigD0.C:28
 ConfigD0.C:29
 ConfigD0.C:30
 ConfigD0.C:31
 ConfigD0.C:32
 ConfigD0.C:33
 ConfigD0.C:34
 ConfigD0.C:35
 ConfigD0.C:36
 ConfigD0.C:37
 ConfigD0.C:38
 ConfigD0.C:39
 ConfigD0.C:40
 ConfigD0.C:41
 ConfigD0.C:42
 ConfigD0.C:43
 ConfigD0.C:44
 ConfigD0.C:45
 ConfigD0.C:46
 ConfigD0.C:47
 ConfigD0.C:48
 ConfigD0.C:49
 ConfigD0.C:50
 ConfigD0.C:51
 ConfigD0.C:52
 ConfigD0.C:53
 ConfigD0.C:54
 ConfigD0.C:55
 ConfigD0.C:56
 ConfigD0.C:57
 ConfigD0.C:58
 ConfigD0.C:59
 ConfigD0.C:60
 ConfigD0.C:61
 ConfigD0.C:62
 ConfigD0.C:63
 ConfigD0.C:64
 ConfigD0.C:65
 ConfigD0.C:66
 ConfigD0.C:67
 ConfigD0.C:68
 ConfigD0.C:69
 ConfigD0.C:70
 ConfigD0.C:71
 ConfigD0.C:72
 ConfigD0.C:73
 ConfigD0.C:74
 ConfigD0.C:75
 ConfigD0.C:76
 ConfigD0.C:77
 ConfigD0.C:78
 ConfigD0.C:79
 ConfigD0.C:80
 ConfigD0.C:81
 ConfigD0.C:82
 ConfigD0.C:83
 ConfigD0.C:84
 ConfigD0.C:85
 ConfigD0.C:86
 ConfigD0.C:87
 ConfigD0.C:88
 ConfigD0.C:89
 ConfigD0.C:90
 ConfigD0.C:91
 ConfigD0.C:92
 ConfigD0.C:93
 ConfigD0.C:94
 ConfigD0.C:95
 ConfigD0.C:96
 ConfigD0.C:97
 ConfigD0.C:98
 ConfigD0.C:99
 ConfigD0.C:100
 ConfigD0.C:101
 ConfigD0.C:102
 ConfigD0.C:103
 ConfigD0.C:104
 ConfigD0.C:105
 ConfigD0.C:106
 ConfigD0.C:107
 ConfigD0.C:108
 ConfigD0.C:109
 ConfigD0.C:110
 ConfigD0.C:111
 ConfigD0.C:112
 ConfigD0.C:113
 ConfigD0.C:114
 ConfigD0.C:115
 ConfigD0.C:116
 ConfigD0.C:117
 ConfigD0.C:118
 ConfigD0.C:119
 ConfigD0.C:120
 ConfigD0.C:121
 ConfigD0.C:122
 ConfigD0.C:123
 ConfigD0.C:124
 ConfigD0.C:125
 ConfigD0.C:126
 ConfigD0.C:127
 ConfigD0.C:128
 ConfigD0.C:129
 ConfigD0.C:130
 ConfigD0.C:131
 ConfigD0.C:132
 ConfigD0.C:133
 ConfigD0.C:134
 ConfigD0.C:135
 ConfigD0.C:136
 ConfigD0.C:137
 ConfigD0.C:138
 ConfigD0.C:139
 ConfigD0.C:140
 ConfigD0.C:141
 ConfigD0.C:142
 ConfigD0.C:143
 ConfigD0.C:144
 ConfigD0.C:145
 ConfigD0.C:146
 ConfigD0.C:147
 ConfigD0.C:148
 ConfigD0.C:149
 ConfigD0.C:150
 ConfigD0.C:151
 ConfigD0.C:152
 ConfigD0.C:153
 ConfigD0.C:154
 ConfigD0.C:155
 ConfigD0.C:156
 ConfigD0.C:157
 ConfigD0.C:158
 ConfigD0.C:159
 ConfigD0.C:160
 ConfigD0.C:161
 ConfigD0.C:162
 ConfigD0.C:163
 ConfigD0.C:164
 ConfigD0.C:165
 ConfigD0.C:166
 ConfigD0.C:167
 ConfigD0.C:168
 ConfigD0.C:169
 ConfigD0.C:170
 ConfigD0.C:171
 ConfigD0.C:172
 ConfigD0.C:173
 ConfigD0.C:174
 ConfigD0.C:175
 ConfigD0.C:176
 ConfigD0.C:177
 ConfigD0.C:178
 ConfigD0.C:179
 ConfigD0.C:180
 ConfigD0.C:181
 ConfigD0.C:182
 ConfigD0.C:183
 ConfigD0.C:184
 ConfigD0.C:185
 ConfigD0.C:186
 ConfigD0.C:187
 ConfigD0.C:188
 ConfigD0.C:189
 ConfigD0.C:190
 ConfigD0.C:191
 ConfigD0.C:192
 ConfigD0.C:193
 ConfigD0.C:194
 ConfigD0.C:195
 ConfigD0.C:196
 ConfigD0.C:197
 ConfigD0.C:198
 ConfigD0.C:199
 ConfigD0.C:200
 ConfigD0.C:201
 ConfigD0.C:202
 ConfigD0.C:203
 ConfigD0.C:204
 ConfigD0.C:205
 ConfigD0.C:206
 ConfigD0.C:207
 ConfigD0.C:208
 ConfigD0.C:209
 ConfigD0.C:210
 ConfigD0.C:211
 ConfigD0.C:212
 ConfigD0.C:213
 ConfigD0.C:214
 ConfigD0.C:215
 ConfigD0.C:216
 ConfigD0.C:217
 ConfigD0.C:218
 ConfigD0.C:219
 ConfigD0.C:220
 ConfigD0.C:221
 ConfigD0.C:222
 ConfigD0.C:223
 ConfigD0.C:224
 ConfigD0.C:225
 ConfigD0.C:226
 ConfigD0.C:227
 ConfigD0.C:228
 ConfigD0.C:229
 ConfigD0.C:230
 ConfigD0.C:231
 ConfigD0.C:232
 ConfigD0.C:233
 ConfigD0.C:234
 ConfigD0.C:235
 ConfigD0.C:236
 ConfigD0.C:237
 ConfigD0.C:238
 ConfigD0.C:239
 ConfigD0.C:240
 ConfigD0.C:241
 ConfigD0.C:242
 ConfigD0.C:243
 ConfigD0.C:244
 ConfigD0.C:245
 ConfigD0.C:246
 ConfigD0.C:247
 ConfigD0.C:248
 ConfigD0.C:249
 ConfigD0.C:250
 ConfigD0.C:251
 ConfigD0.C:252
 ConfigD0.C:253
 ConfigD0.C:254
 ConfigD0.C:255
 ConfigD0.C:256
 ConfigD0.C:257
 ConfigD0.C:258
 ConfigD0.C:259
 ConfigD0.C:260
 ConfigD0.C:261
 ConfigD0.C:262
 ConfigD0.C:263
 ConfigD0.C:264
 ConfigD0.C:265
 ConfigD0.C:266
 ConfigD0.C:267
 ConfigD0.C:268
 ConfigD0.C:269
 ConfigD0.C:270
 ConfigD0.C:271
 ConfigD0.C:272
 ConfigD0.C:273
 ConfigD0.C:274
 ConfigD0.C:275
 ConfigD0.C:276
 ConfigD0.C:277
 ConfigD0.C:278
 ConfigD0.C:279
 ConfigD0.C:280
 ConfigD0.C:281
 ConfigD0.C:282
 ConfigD0.C:283
 ConfigD0.C:284
 ConfigD0.C:285
 ConfigD0.C:286
 ConfigD0.C:287
 ConfigD0.C:288
 ConfigD0.C:289
 ConfigD0.C:290
 ConfigD0.C:291
 ConfigD0.C:292
 ConfigD0.C:293
 ConfigD0.C:294
 ConfigD0.C:295
 ConfigD0.C:296
 ConfigD0.C:297
 ConfigD0.C:298
 ConfigD0.C:299
 ConfigD0.C:300
 ConfigD0.C:301
 ConfigD0.C:302
 ConfigD0.C:303
 ConfigD0.C:304
 ConfigD0.C:305
 ConfigD0.C:306
 ConfigD0.C:307
 ConfigD0.C:308
 ConfigD0.C:309
 ConfigD0.C:310
 ConfigD0.C:311
 ConfigD0.C:312
 ConfigD0.C:313
 ConfigD0.C:314
 ConfigD0.C:315
 ConfigD0.C:316
 ConfigD0.C:317
 ConfigD0.C:318
 ConfigD0.C:319
 ConfigD0.C:320
 ConfigD0.C:321
 ConfigD0.C:322
 ConfigD0.C:323
 ConfigD0.C:324
 ConfigD0.C:325
 ConfigD0.C:326
 ConfigD0.C:327
 ConfigD0.C:328
 ConfigD0.C:329
 ConfigD0.C:330
 ConfigD0.C:331
 ConfigD0.C:332
 ConfigD0.C:333
 ConfigD0.C:334
 ConfigD0.C:335
 ConfigD0.C:336
 ConfigD0.C:337
 ConfigD0.C:338
 ConfigD0.C:339
 ConfigD0.C:340
 ConfigD0.C:341
 ConfigD0.C:342
 ConfigD0.C:343
 ConfigD0.C:344
 ConfigD0.C:345
 ConfigD0.C:346
 ConfigD0.C:347
 ConfigD0.C:348
 ConfigD0.C:349
 ConfigD0.C:350
 ConfigD0.C:351
 ConfigD0.C:352
 ConfigD0.C:353
 ConfigD0.C:354
 ConfigD0.C:355
 ConfigD0.C:356
 ConfigD0.C:357
 ConfigD0.C:358
 ConfigD0.C:359
 ConfigD0.C:360
 ConfigD0.C:361
 ConfigD0.C:362
 ConfigD0.C:363
 ConfigD0.C:364
 ConfigD0.C:365
 ConfigD0.C:366
 ConfigD0.C:367
 ConfigD0.C:368
 ConfigD0.C:369
 ConfigD0.C:370
 ConfigD0.C:371
 ConfigD0.C:372
 ConfigD0.C:373
 ConfigD0.C:374
 ConfigD0.C:375
 ConfigD0.C:376
 ConfigD0.C:377
 ConfigD0.C:378
 ConfigD0.C:379
 ConfigD0.C:380
 ConfigD0.C:381
 ConfigD0.C:382
 ConfigD0.C:383
 ConfigD0.C:384
 ConfigD0.C:385
 ConfigD0.C:386
 ConfigD0.C:387
 ConfigD0.C:388
 ConfigD0.C:389
 ConfigD0.C:390
 ConfigD0.C:391
 ConfigD0.C:392
 ConfigD0.C:393
 ConfigD0.C:394
 ConfigD0.C:395
 ConfigD0.C:396
 ConfigD0.C:397
 ConfigD0.C:398
 ConfigD0.C:399
 ConfigD0.C:400
 ConfigD0.C:401
 ConfigD0.C:402
 ConfigD0.C:403
 ConfigD0.C:404
 ConfigD0.C:405
 ConfigD0.C:406
 ConfigD0.C:407
 ConfigD0.C:408
 ConfigD0.C:409
 ConfigD0.C:410
 ConfigD0.C:411
 ConfigD0.C:412
 ConfigD0.C:413
 ConfigD0.C:414
 ConfigD0.C:415
 ConfigD0.C:416
 ConfigD0.C:417
 ConfigD0.C:418
 ConfigD0.C:419
 ConfigD0.C:420
 ConfigD0.C:421
 ConfigD0.C:422
 ConfigD0.C:423
 ConfigD0.C:424
 ConfigD0.C:425
 ConfigD0.C:426
 ConfigD0.C:427
 ConfigD0.C:428
 ConfigD0.C:429
 ConfigD0.C:430
 ConfigD0.C:431
 ConfigD0.C:432
 ConfigD0.C:433
 ConfigD0.C:434
 ConfigD0.C:435
 ConfigD0.C:436
 ConfigD0.C:437
 ConfigD0.C:438
 ConfigD0.C:439
 ConfigD0.C:440
 ConfigD0.C:441
 ConfigD0.C:442
 ConfigD0.C:443
 ConfigD0.C:444
 ConfigD0.C:445
 ConfigD0.C:446
 ConfigD0.C:447
 ConfigD0.C:448
 ConfigD0.C:449
 ConfigD0.C:450
 ConfigD0.C:451
 ConfigD0.C:452
 ConfigD0.C:453
 ConfigD0.C:454
 ConfigD0.C:455
 ConfigD0.C:456
 ConfigD0.C:457
 ConfigD0.C:458
 ConfigD0.C:459
 ConfigD0.C:460
 ConfigD0.C:461
 ConfigD0.C:462
 ConfigD0.C:463
 ConfigD0.C:464
 ConfigD0.C:465
 ConfigD0.C:466
 ConfigD0.C:467
 ConfigD0.C:468
 ConfigD0.C:469
 ConfigD0.C:470
 ConfigD0.C:471
 ConfigD0.C:472
 ConfigD0.C:473
 ConfigD0.C:474
 ConfigD0.C:475
 ConfigD0.C:476
 ConfigD0.C:477
 ConfigD0.C:478
 ConfigD0.C:479
 ConfigD0.C:480
 ConfigD0.C:481
 ConfigD0.C:482
 ConfigD0.C:483
 ConfigD0.C:484
 ConfigD0.C:485
 ConfigD0.C:486
 ConfigD0.C:487
 ConfigD0.C:488
 ConfigD0.C:489
 ConfigD0.C:490
 ConfigD0.C:491
 ConfigD0.C:492
 ConfigD0.C:493
 ConfigD0.C:494
 ConfigD0.C:495
 ConfigD0.C:496
 ConfigD0.C:497
 ConfigD0.C:498
 ConfigD0.C:499
 ConfigD0.C:500
 ConfigD0.C:501
 ConfigD0.C:502
 ConfigD0.C:503
 ConfigD0.C:504
 ConfigD0.C:505
 ConfigD0.C:506
 ConfigD0.C:507
 ConfigD0.C:508
 ConfigD0.C:509
 ConfigD0.C:510
 ConfigD0.C:511
 ConfigD0.C:512
 ConfigD0.C:513
 ConfigD0.C:514
 ConfigD0.C:515
 ConfigD0.C:516
 ConfigD0.C:517
 ConfigD0.C:518
 ConfigD0.C:519
 ConfigD0.C:520
 ConfigD0.C:521
 ConfigD0.C:522
 ConfigD0.C:523
 ConfigD0.C:524
 ConfigD0.C:525
 ConfigD0.C:526
 ConfigD0.C:527
 ConfigD0.C:528
 ConfigD0.C:529
 ConfigD0.C:530
 ConfigD0.C:531
 ConfigD0.C:532
 ConfigD0.C:533
 ConfigD0.C:534
 ConfigD0.C:535
 ConfigD0.C:536
 ConfigD0.C:537
 ConfigD0.C:538
 ConfigD0.C:539
 ConfigD0.C:540
 ConfigD0.C:541
 ConfigD0.C:542
 ConfigD0.C:543
 ConfigD0.C:544
 ConfigD0.C:545
 ConfigD0.C:546
 ConfigD0.C:547
 ConfigD0.C:548
 ConfigD0.C:549
 ConfigD0.C:550
 ConfigD0.C:551
 ConfigD0.C:552
 ConfigD0.C:553
 ConfigD0.C:554
 ConfigD0.C:555
 ConfigD0.C:556
 ConfigD0.C:557
 ConfigD0.C:558
 ConfigD0.C:559
 ConfigD0.C:560
 ConfigD0.C:561
 ConfigD0.C:562
 ConfigD0.C:563
 ConfigD0.C:564
 ConfigD0.C:565
 ConfigD0.C:566
 ConfigD0.C:567
 ConfigD0.C:568
 ConfigD0.C:569
 ConfigD0.C:570
 ConfigD0.C:571
 ConfigD0.C:572
 ConfigD0.C:573
 ConfigD0.C:574
 ConfigD0.C:575
 ConfigD0.C:576
 ConfigD0.C:577
 ConfigD0.C:578
 ConfigD0.C:579
 ConfigD0.C:580
 ConfigD0.C:581
 ConfigD0.C:582
 ConfigD0.C:583
 ConfigD0.C:584
 ConfigD0.C:585
 ConfigD0.C:586
 ConfigD0.C:587
 ConfigD0.C:588
 ConfigD0.C:589
 ConfigD0.C:590
 ConfigD0.C:591
 ConfigD0.C:592
 ConfigD0.C:593
 ConfigD0.C:594
 ConfigD0.C:595
 ConfigD0.C:596
 ConfigD0.C:597
 ConfigD0.C:598
 ConfigD0.C:599
 ConfigD0.C:600
 ConfigD0.C:601
 ConfigD0.C:602
 ConfigD0.C:603
 ConfigD0.C:604
 ConfigD0.C:605
 ConfigD0.C:606
 ConfigD0.C:607
 ConfigD0.C:608
 ConfigD0.C:609
 ConfigD0.C:610
 ConfigD0.C:611
 ConfigD0.C:612
 ConfigD0.C:613
 ConfigD0.C:614
 ConfigD0.C:615
 ConfigD0.C:616
 ConfigD0.C:617
 ConfigD0.C:618
 ConfigD0.C:619
 ConfigD0.C:620
 ConfigD0.C:621
 ConfigD0.C:622
 ConfigD0.C:623
 ConfigD0.C:624
 ConfigD0.C:625
 ConfigD0.C:626
 ConfigD0.C:627
 ConfigD0.C:628
 ConfigD0.C:629
 ConfigD0.C:630
 ConfigD0.C:631
 ConfigD0.C:632
 ConfigD0.C:633
 ConfigD0.C:634
 ConfigD0.C:635
 ConfigD0.C:636
 ConfigD0.C:637
 ConfigD0.C:638
 ConfigD0.C:639
 ConfigD0.C:640
 ConfigD0.C:641
 ConfigD0.C:642
 ConfigD0.C:643
 ConfigD0.C:644
 ConfigD0.C:645
 ConfigD0.C:646
 ConfigD0.C:647
 ConfigD0.C:648
 ConfigD0.C:649
 ConfigD0.C:650
 ConfigD0.C:651
 ConfigD0.C:652
 ConfigD0.C:653
 ConfigD0.C:654
 ConfigD0.C:655
 ConfigD0.C:656
 ConfigD0.C:657
 ConfigD0.C:658
 ConfigD0.C:659
 ConfigD0.C:660
 ConfigD0.C:661
 ConfigD0.C:662
 ConfigD0.C:663
 ConfigD0.C:664
 ConfigD0.C:665
 ConfigD0.C:666
 ConfigD0.C:667
 ConfigD0.C:668
 ConfigD0.C:669
 ConfigD0.C:670
 ConfigD0.C:671
 ConfigD0.C:672
 ConfigD0.C:673
 ConfigD0.C:674
 ConfigD0.C:675
 ConfigD0.C:676
 ConfigD0.C:677
 ConfigD0.C:678
 ConfigD0.C:679
 ConfigD0.C:680
 ConfigD0.C:681
 ConfigD0.C:682
 ConfigD0.C:683
 ConfigD0.C:684
 ConfigD0.C:685
 ConfigD0.C:686
 ConfigD0.C:687