ROOT logo
/**************************************************************************
 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 *                                                                        *
 * Author: The ALICE Off-line Project.                                    *
 * Contributors are mentioned in the code where appropriate.              *
 *                                                                        *
 * Permission to use, copy, modify and distribute this software and its   *
 * documentation strictly for non-commercial purposes is hereby granted   *
 * without fee, provided that the above copyright notice appears in all   *
 * copies and that both the copyright notice and this permission notice   *
 * appear in the supporting documentation. The authors make no claims     *
 * about the suitability of this software for any purpose. It is          *
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/


// $Id$

// AliAnalysisMuMuConfig : class to hold various configuration
// options for the AliAnalysisMuMu and AliAnalysisMuMuEvolution classes
// like the list of triggers to consider, the fit to be performed, etc...
// both for real data and for simulations (which might differ in e.g.
// the naming of the triggers)
//
// author: Laurent Aphecetche, Subatech
//
//
// TODO : make it readeable/writeable from/to a simple ASCII file ?
//

#include "AliAnalysisMuMuConfig.h"
#include "TObjArray.h"
#include "TObjString.h"
#include "Riostream.h"
#include "TColor.h"
#include "TStyle.h"

ClassImp(AliAnalysisMuMuConfig)

//_____________________________________________________________________________
AliAnalysisMuMuConfig::AliAnalysisMuMuConfig(const char* beamYear) : TObject(),
fLists(new TObjArray),
fOCDBPath("raw://"),
fIsCompactGraphs(kFALSE)
{
  // ctor
  
  fLists->SetOwner(kTRUE);
  
  fLists->Add(new TObjArray); // list for real data
  fLists->Add(new TObjArray); // list for simulations

  DefineDefaults(beamYear);  
}

//_____________________________________________________________________________
AliAnalysisMuMuConfig::~AliAnalysisMuMuConfig()
{
  // dtor
  delete fLists;
}

//_____________________________________________________________________________
void AliAnalysisMuMuConfig::DefineDefaults(const char* beamYear)
{
  // define some sensible defaults
  
  TString sbeam(beamYear);
  
  SetList(kDimuonTriggerList,kTRUE,"CMULLO-B-NOPF-MUON");
  SetList(kMuonTriggerList,kTRUE,"CMSNGL-B-NOPF-MUON");
  SetList(kEventSelectionList,kTRUE,"ALL");
  SetList(kPairSelectionList,kTRUE,"pRABSETAMATCHLOWPAIRY"); //pRABSETAPDCAMATCHLOWPAIRYPAIRPTIN0.0-15.0 //pRABSETAMATCHLOWPAIRYPAIRPTIN0.0-15.0
  SetList(kCentralitySelectionList,kTRUE,"V0A");
SetList(kFitTypeList,kTRUE,"func=PSICB2:histoType=minvJPsi:rebin=2:range=2.2;3.9,func=PSINA60NEW:histoType=minvJPsi:rebin=2:range=1.5;4.2,func=PSICB2:histoType=minvPsiP:rebin=2:range=2.0;4.2,func=PSICOUNT:histoType=minv");
//  SetList(kFitTypeList,kTRUE,"func=PSICB2:histoType=minvJPsi:rebin=2:range=2.2;3.9,func=PSICOUNT:histoType=minv");
  
  //,func=PSINA60NEW:histoType=minvJPsi:rebin=2:range=1.5;4.2
  //func=PSINA60NEW:histoType=minvJPsi:range=1.6;4.0:rebin=2,func=PSINA60NEW:histoType=minvPsiP:range=1.4;5.0:rebin=2
  //:alJPsi=1.0469:nlJPsi=4.1687:auJPsi=2.2517:nuJPsi=3.0778 (JPsi tails from raw spectra)
  //:alPsiP=1.0289:nlPsiP=3.86131:auPsiP=2.2737:nuPsiP=2.8995 (JPsi tails from AccxEff corr spectra to apply to PsiP spectra)
  
  if (sbeam=="pPb2013" || sbeam=="Pbp2013")
  {
    SetList(kDimuonTriggerList,kFALSE,"CMUL7-B-NOPF-MUON");
    SetList(kMuonTriggerList,kFALSE,"CMSL7-B-NOPF-MUON");
    SetList(kMinbiasTriggerList,kFALSE,"CINT7-B-NOPF-ALLNOTRD");
    SetList(kEventSelectionList,kFALSE,"PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50SPDABSZLT10.00,PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50,PSALLHASSPD,PSALL");
    SetList(kPairSelectionList,kFALSE,"pRABSETAPDCAMATCHLOWPAIRYPAIRPTIN0.0-15.0");
    SetList(kCentralitySelectionList,kFALSE,"V0A");
 
//    SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=0.9,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.1,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=0.9,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.1,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt");
    
SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt");
    
//    SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=0.9,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.1,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=0.9,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=0.9,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.1,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=0.9,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt");
    
    //,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt //Removed because bad results for pPb mean pt

//    SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=0.9,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.1,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=0.9,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=0.9,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.1,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=0.9,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWVWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWVWG_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWVWG_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWVWG_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt");
    
    //,func=PSIPSIPRIMENA60NEWVWG:rebin=2:histoType=minv:tails=mctails
    //func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctailsJPsi&PsiP, func=PSIPSIPRIMECB2VWG;MPT2CB2VWGPOL2:rebin=2:histoType=minv&mpt:tails=mctailsJsi&PsiP(We can think about somth like this to make the combined fits),func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:alJPsi=0.984:nlJPsi=5.839:auJPsi=1.972:nuJPsi=3.444
    //func=PSIPSIPRIMECB2VWGINDEPTAILS:rebin=2:tails=mctails:histoType=minv,
    //Tails key migth be unneccesary since we have already different fitting function names(think about it)
  }
  else if (sbeam=="pp2012_7")
  {
    //    SetList(kDimuonTriggerList,kFALSE,"CMUL7-S-NOPF-MUON");
    SetList(kDimuonTriggerList,kFALSE,"CMUL7-S-NOPF-MUON");
    SetList(kMuonTriggerList,kFALSE,"CMSL7-S-NOPF-MUON");
    SetList(kMinbiasTriggerList,kFALSE,"CINT7-S-NOPF-ALLNOTRD");
    SetList(kEventSelectionList,kFALSE,"PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50SPDABSZLT10.00");
    SetList(kPairSelectionList,kFALSE,"pRABSETAPDCAMATCHLOWPAIRYPAIRPTIN0.0-15.0");
    SetList(kCentralitySelectionList,kFALSE,"V0A");
    
    SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt");//:sigmapsip=1.0
    SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2POL4EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt");

    SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=0.9,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.1,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=0.9,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.,func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWVWG:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWVWG:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=0.9,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.0;5.0:fsigmapsip=1.1,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=0.9,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.,func=PSIPSIPRIMECB2POL2EXP:rebin=2:histoType=minv:tails=mctails:range=2.2;4.7:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.0;5.0:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=0.9,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.,func=PSIPSIPRIMENA60NEWPOL2EXP:range=2.2;4.7:rebin=2:histoType=minv:tails=mctails:fsigmapsip=1.1,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMECB2POL2EXP_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWVWG_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWVWG_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWVWG_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWVWG_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2:range=2.2;4.7:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2EXP:range=2.0;5.:rebin=2:histoType=mpt,func=MPTPSIPSIPRIMENA60NEWPOL2EXP_BKGMPTPOL2EXP:range=2.2;4.7:rebin=2:histoType=mpt");
    
//SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:rebin=2:histoType=mpt");
    //MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2
    //func=PSIPSIPRIMECB2VWGINDEPTAILS:rebin=2:tails=mctails:histoType=minv,
    //func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctailsJPsi&PsiP, func=PSIPSIPRIMECB2VWG;MPT2CB2VWGPOL2:rebin=2:histoType=minv&mpt:tails=mctailsJsi&PsiP(We can think about somth like this to make the combined fits),func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:alJPsi=0.984:nlJPsi=5.839:auJPsi=1.972:nuJPsi=3.444
    //Tails key migth be unneccesary since we have already different fitting function names(think about it)
  }
  
  else if (sbeam=="pp2012_8")
  {
    //    SetList(kDimuonTriggerList,kFALSE,"CMUL7-S-NOPF-MUON");
    SetList(kDimuonTriggerList,kFALSE,"CMUL8-S-NOPF-MUON");
    SetList(kMuonTriggerList,kFALSE,"CMSL7-8-NOPF-MUON");
    SetList(kMinbiasTriggerList,kFALSE,"CINT8-S-NOPF-ALLNOTRD");
    SetList(kEventSelectionList,kFALSE,"PSALLHASSPDSPDZQA_RES0.25_ZDIF0.50SPDABSZLT10.00");
    SetList(kPairSelectionList,kFALSE,"pRABSETAPDCAMATCHLOWPAIRYPAIRPTIN0.0-15.0");
    SetList(kCentralitySelectionList,kFALSE,"V0A");
    SetList(kFitTypeList,kFALSE,"func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctails,func=MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2:rebin=2:histoType=mpt");
    //MPTPSIPSIPRIMECB2VWG_BKGMPTPOL2
    //func=PSIPSIPRIMECB2VWGINDEPTAILS:rebin=2:tails=mctails:histoType=minv,
    //func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:tails=mctailsJPsi&PsiP, func=PSIPSIPRIMECB2VWG;MPT2CB2VWGPOL2:rebin=2:histoType=minv&mpt:tails=mctailsJsi&PsiP(We can think about somth like this to make the combined fits),func=PSIPSIPRIMECB2VWG:rebin=2:histoType=minv:alJPsi=0.984:nlJPsi=5.839:auJPsi=1.972:nuJPsi=3.444
    //Tails key migth be unneccesary since we have already different fitting function names(think about it)
  }

}

//_____________________________________________________________________________
TString AliAnalysisMuMuConfig::GetList(ETypeList type, Bool_t simulation) const
{
  /// Get the value for a given list. If simulation=true and the list is not
  /// there for that type, the list from real data is returned
  TObjArray* array = static_cast<TObjArray*>(fLists->At(simulation));
  TObjString* str = static_cast<TObjString*>(array->At(type));
  if ( !str && simulation )
  {
    return GetList(type,kFALSE);
  }
  return str->String();
}

//_____________________________________________________________________________
TObjArray* AliAnalysisMuMuConfig::GetListElements(ETypeList type, Bool_t simulation) const
{
  /// Get list as an array (to be deleted by the user)
  TString list = GetList(type,simulation);
  return list.Tokenize(",");
}

//_____________________________________________________________________________
void AliAnalysisMuMuConfig::SetList(ETypeList type, Bool_t simulation, const char* list)
{
  /// Set the list of a given type
  TObjArray* array = static_cast<TObjArray*>(fLists->At(simulation));
  TObjString* str = static_cast<TObjString*>(array->At(type));
  if (!str)
  {
    str = new TObjString;
    array->AddAt(str,type);
  }
  str->String() = list;
}

//_____________________________________________________________________________
void AliAnalysisMuMuConfig::ShowLists(const char* title, ETypeList type, const char separator, const TString& opt) const
{
  /// Show the real and sim list of a given type
  
  std::cout << title << std::endl;
  
  TString list;
  
  if ( opt.Contains("REAL",TString::kIgnoreCase) )
  {
    list = GetList(type,kFALSE);
    ShowList("real",list,separator);
  }
  if ( opt.Contains("SIM",TString::kIgnoreCase) )
  {
    list = GetList(type,kTRUE);
    ShowList("sim",list,separator);
  }
}

//_____________________________________________________________________________
void AliAnalysisMuMuConfig::ShowList(const char* title, const TString& list, const char separator) const
{
  /// Show the list content
  
  TObjArray* parts = list.Tokenize(separator);

  TIter next(parts);
  TObjString* str;
  
  std::cout << "   " << title << " (" << parts->GetEntries() << ")" << std::endl;
  
  while ( ( str = static_cast<TObjString*>(next()) ) )
  {
    std::cout << "       " << str->String().Data() << std::endl;
  }
  
  delete parts;
}

//_____________________________________________________________________________
void AliAnalysisMuMuConfig::Print(Option_t* opt) const
{
  /// printout
  /// Use opt = "REAL" to show only things relevant to real data
  /// Use opt = "SIM" to show only things relevant to simulation
  /// Use opt = "REAL SIM" or "" to show everything
  
  TString sopt(opt);
  sopt.ToUpper();
  
  if (sopt.Length()==0)
  {
    sopt = "REAL SIM";
  }
  
  ShowLists("Dimuon triggers",kDimuonTriggerList,',',sopt.Data());
  ShowLists("Muon triggers",kMuonTriggerList,',',sopt.Data());
  ShowLists("MB triggers",kMinbiasTriggerList,',',sopt.Data());
  ShowLists("Event selection",kEventSelectionList,',',sopt.Data());
  ShowLists("Pair selection",kPairSelectionList,',',sopt.Data());
  ShowLists("Centrality selection",kCentralitySelectionList,',',sopt.Data());
  ShowLists("Fit types",kFitTypeList,',',sopt.Data());
}

//_____________________________________________________________________________
void AliAnalysisMuMuConfig::SetColorScheme()
{
  /// Set a few custom colors
  
  new TColor(AliAnalysisMuMuConfig::kBlue,4/255.0,44/255.0,87/255.0,"my blue");
  new TColor(AliAnalysisMuMuConfig::kOrange,255/255.0,83/255.0,8/255.0,"my orange");
  new TColor(AliAnalysisMuMuConfig::kGreen,152/255.0,202/255.0,52/255.0,"my green");
  
  gStyle->SetGridColor(AliAnalysisMuMuConfig::kBlue);
  
  gStyle->SetFrameLineColor(AliAnalysisMuMuConfig::kBlue);
  gStyle->SetAxisColor(AliAnalysisMuMuConfig::kBlue,"xyz");
  gStyle->SetLabelColor(AliAnalysisMuMuConfig::kBlue,"xyz");
  
  gStyle->SetTitleColor(AliAnalysisMuMuConfig::kBlue);
  gStyle->SetTitleTextColor(AliAnalysisMuMuConfig::kBlue);
  gStyle->SetLabelColor(AliAnalysisMuMuConfig::kBlue);
  gStyle->SetStatTextColor(AliAnalysisMuMuConfig::kBlue);
  
  gStyle->SetOptStat(0);
}
 AliAnalysisMuMuConfig.cxx:1
 AliAnalysisMuMuConfig.cxx:2
 AliAnalysisMuMuConfig.cxx:3
 AliAnalysisMuMuConfig.cxx:4
 AliAnalysisMuMuConfig.cxx:5
 AliAnalysisMuMuConfig.cxx:6
 AliAnalysisMuMuConfig.cxx:7
 AliAnalysisMuMuConfig.cxx:8
 AliAnalysisMuMuConfig.cxx:9
 AliAnalysisMuMuConfig.cxx:10
 AliAnalysisMuMuConfig.cxx:11
 AliAnalysisMuMuConfig.cxx:12
 AliAnalysisMuMuConfig.cxx:13
 AliAnalysisMuMuConfig.cxx:14
 AliAnalysisMuMuConfig.cxx:15
 AliAnalysisMuMuConfig.cxx:16
 AliAnalysisMuMuConfig.cxx:17
 AliAnalysisMuMuConfig.cxx:18
 AliAnalysisMuMuConfig.cxx:19
 AliAnalysisMuMuConfig.cxx:20
 AliAnalysisMuMuConfig.cxx:21
 AliAnalysisMuMuConfig.cxx:22
 AliAnalysisMuMuConfig.cxx:23
 AliAnalysisMuMuConfig.cxx:24
 AliAnalysisMuMuConfig.cxx:25
 AliAnalysisMuMuConfig.cxx:26
 AliAnalysisMuMuConfig.cxx:27
 AliAnalysisMuMuConfig.cxx:28
 AliAnalysisMuMuConfig.cxx:29
 AliAnalysisMuMuConfig.cxx:30
 AliAnalysisMuMuConfig.cxx:31
 AliAnalysisMuMuConfig.cxx:32
 AliAnalysisMuMuConfig.cxx:33
 AliAnalysisMuMuConfig.cxx:34
 AliAnalysisMuMuConfig.cxx:35
 AliAnalysisMuMuConfig.cxx:36
 AliAnalysisMuMuConfig.cxx:37
 AliAnalysisMuMuConfig.cxx:38
 AliAnalysisMuMuConfig.cxx:39
 AliAnalysisMuMuConfig.cxx:40
 AliAnalysisMuMuConfig.cxx:41
 AliAnalysisMuMuConfig.cxx:42
 AliAnalysisMuMuConfig.cxx:43
 AliAnalysisMuMuConfig.cxx:44
 AliAnalysisMuMuConfig.cxx:45
 AliAnalysisMuMuConfig.cxx:46
 AliAnalysisMuMuConfig.cxx:47
 AliAnalysisMuMuConfig.cxx:48
 AliAnalysisMuMuConfig.cxx:49
 AliAnalysisMuMuConfig.cxx:50
 AliAnalysisMuMuConfig.cxx:51
 AliAnalysisMuMuConfig.cxx:52
 AliAnalysisMuMuConfig.cxx:53
 AliAnalysisMuMuConfig.cxx:54
 AliAnalysisMuMuConfig.cxx:55
 AliAnalysisMuMuConfig.cxx:56
 AliAnalysisMuMuConfig.cxx:57
 AliAnalysisMuMuConfig.cxx:58
 AliAnalysisMuMuConfig.cxx:59
 AliAnalysisMuMuConfig.cxx:60
 AliAnalysisMuMuConfig.cxx:61
 AliAnalysisMuMuConfig.cxx:62
 AliAnalysisMuMuConfig.cxx:63
 AliAnalysisMuMuConfig.cxx:64
 AliAnalysisMuMuConfig.cxx:65
 AliAnalysisMuMuConfig.cxx:66
 AliAnalysisMuMuConfig.cxx:67
 AliAnalysisMuMuConfig.cxx:68
 AliAnalysisMuMuConfig.cxx:69
 AliAnalysisMuMuConfig.cxx:70
 AliAnalysisMuMuConfig.cxx:71
 AliAnalysisMuMuConfig.cxx:72
 AliAnalysisMuMuConfig.cxx:73
 AliAnalysisMuMuConfig.cxx:74
 AliAnalysisMuMuConfig.cxx:75
 AliAnalysisMuMuConfig.cxx:76
 AliAnalysisMuMuConfig.cxx:77
 AliAnalysisMuMuConfig.cxx:78
 AliAnalysisMuMuConfig.cxx:79
 AliAnalysisMuMuConfig.cxx:80
 AliAnalysisMuMuConfig.cxx:81
 AliAnalysisMuMuConfig.cxx:82
 AliAnalysisMuMuConfig.cxx:83
 AliAnalysisMuMuConfig.cxx:84
 AliAnalysisMuMuConfig.cxx:85
 AliAnalysisMuMuConfig.cxx:86
 AliAnalysisMuMuConfig.cxx:87
 AliAnalysisMuMuConfig.cxx:88
 AliAnalysisMuMuConfig.cxx:89
 AliAnalysisMuMuConfig.cxx:90
 AliAnalysisMuMuConfig.cxx:91
 AliAnalysisMuMuConfig.cxx:92
 AliAnalysisMuMuConfig.cxx:93
 AliAnalysisMuMuConfig.cxx:94
 AliAnalysisMuMuConfig.cxx:95
 AliAnalysisMuMuConfig.cxx:96
 AliAnalysisMuMuConfig.cxx:97
 AliAnalysisMuMuConfig.cxx:98
 AliAnalysisMuMuConfig.cxx:99
 AliAnalysisMuMuConfig.cxx:100
 AliAnalysisMuMuConfig.cxx:101
 AliAnalysisMuMuConfig.cxx:102
 AliAnalysisMuMuConfig.cxx:103
 AliAnalysisMuMuConfig.cxx:104
 AliAnalysisMuMuConfig.cxx:105
 AliAnalysisMuMuConfig.cxx:106
 AliAnalysisMuMuConfig.cxx:107
 AliAnalysisMuMuConfig.cxx:108
 AliAnalysisMuMuConfig.cxx:109
 AliAnalysisMuMuConfig.cxx:110
 AliAnalysisMuMuConfig.cxx:111
 AliAnalysisMuMuConfig.cxx:112
 AliAnalysisMuMuConfig.cxx:113
 AliAnalysisMuMuConfig.cxx:114
 AliAnalysisMuMuConfig.cxx:115
 AliAnalysisMuMuConfig.cxx:116
 AliAnalysisMuMuConfig.cxx:117
 AliAnalysisMuMuConfig.cxx:118
 AliAnalysisMuMuConfig.cxx:119
 AliAnalysisMuMuConfig.cxx:120
 AliAnalysisMuMuConfig.cxx:121
 AliAnalysisMuMuConfig.cxx:122
 AliAnalysisMuMuConfig.cxx:123
 AliAnalysisMuMuConfig.cxx:124
 AliAnalysisMuMuConfig.cxx:125
 AliAnalysisMuMuConfig.cxx:126
 AliAnalysisMuMuConfig.cxx:127
 AliAnalysisMuMuConfig.cxx:128
 AliAnalysisMuMuConfig.cxx:129
 AliAnalysisMuMuConfig.cxx:130
 AliAnalysisMuMuConfig.cxx:131
 AliAnalysisMuMuConfig.cxx:132
 AliAnalysisMuMuConfig.cxx:133
 AliAnalysisMuMuConfig.cxx:134
 AliAnalysisMuMuConfig.cxx:135
 AliAnalysisMuMuConfig.cxx:136
 AliAnalysisMuMuConfig.cxx:137
 AliAnalysisMuMuConfig.cxx:138
 AliAnalysisMuMuConfig.cxx:139
 AliAnalysisMuMuConfig.cxx:140
 AliAnalysisMuMuConfig.cxx:141
 AliAnalysisMuMuConfig.cxx:142
 AliAnalysisMuMuConfig.cxx:143
 AliAnalysisMuMuConfig.cxx:144
 AliAnalysisMuMuConfig.cxx:145
 AliAnalysisMuMuConfig.cxx:146
 AliAnalysisMuMuConfig.cxx:147
 AliAnalysisMuMuConfig.cxx:148
 AliAnalysisMuMuConfig.cxx:149
 AliAnalysisMuMuConfig.cxx:150
 AliAnalysisMuMuConfig.cxx:151
 AliAnalysisMuMuConfig.cxx:152
 AliAnalysisMuMuConfig.cxx:153
 AliAnalysisMuMuConfig.cxx:154
 AliAnalysisMuMuConfig.cxx:155
 AliAnalysisMuMuConfig.cxx:156
 AliAnalysisMuMuConfig.cxx:157
 AliAnalysisMuMuConfig.cxx:158
 AliAnalysisMuMuConfig.cxx:159
 AliAnalysisMuMuConfig.cxx:160
 AliAnalysisMuMuConfig.cxx:161
 AliAnalysisMuMuConfig.cxx:162
 AliAnalysisMuMuConfig.cxx:163
 AliAnalysisMuMuConfig.cxx:164
 AliAnalysisMuMuConfig.cxx:165
 AliAnalysisMuMuConfig.cxx:166
 AliAnalysisMuMuConfig.cxx:167
 AliAnalysisMuMuConfig.cxx:168
 AliAnalysisMuMuConfig.cxx:169
 AliAnalysisMuMuConfig.cxx:170
 AliAnalysisMuMuConfig.cxx:171
 AliAnalysisMuMuConfig.cxx:172
 AliAnalysisMuMuConfig.cxx:173
 AliAnalysisMuMuConfig.cxx:174
 AliAnalysisMuMuConfig.cxx:175
 AliAnalysisMuMuConfig.cxx:176
 AliAnalysisMuMuConfig.cxx:177
 AliAnalysisMuMuConfig.cxx:178
 AliAnalysisMuMuConfig.cxx:179
 AliAnalysisMuMuConfig.cxx:180
 AliAnalysisMuMuConfig.cxx:181
 AliAnalysisMuMuConfig.cxx:182
 AliAnalysisMuMuConfig.cxx:183
 AliAnalysisMuMuConfig.cxx:184
 AliAnalysisMuMuConfig.cxx:185
 AliAnalysisMuMuConfig.cxx:186
 AliAnalysisMuMuConfig.cxx:187
 AliAnalysisMuMuConfig.cxx:188
 AliAnalysisMuMuConfig.cxx:189
 AliAnalysisMuMuConfig.cxx:190
 AliAnalysisMuMuConfig.cxx:191
 AliAnalysisMuMuConfig.cxx:192
 AliAnalysisMuMuConfig.cxx:193
 AliAnalysisMuMuConfig.cxx:194
 AliAnalysisMuMuConfig.cxx:195
 AliAnalysisMuMuConfig.cxx:196
 AliAnalysisMuMuConfig.cxx:197
 AliAnalysisMuMuConfig.cxx:198
 AliAnalysisMuMuConfig.cxx:199
 AliAnalysisMuMuConfig.cxx:200
 AliAnalysisMuMuConfig.cxx:201
 AliAnalysisMuMuConfig.cxx:202
 AliAnalysisMuMuConfig.cxx:203
 AliAnalysisMuMuConfig.cxx:204
 AliAnalysisMuMuConfig.cxx:205
 AliAnalysisMuMuConfig.cxx:206
 AliAnalysisMuMuConfig.cxx:207
 AliAnalysisMuMuConfig.cxx:208
 AliAnalysisMuMuConfig.cxx:209
 AliAnalysisMuMuConfig.cxx:210
 AliAnalysisMuMuConfig.cxx:211
 AliAnalysisMuMuConfig.cxx:212
 AliAnalysisMuMuConfig.cxx:213
 AliAnalysisMuMuConfig.cxx:214
 AliAnalysisMuMuConfig.cxx:215
 AliAnalysisMuMuConfig.cxx:216
 AliAnalysisMuMuConfig.cxx:217
 AliAnalysisMuMuConfig.cxx:218
 AliAnalysisMuMuConfig.cxx:219
 AliAnalysisMuMuConfig.cxx:220
 AliAnalysisMuMuConfig.cxx:221
 AliAnalysisMuMuConfig.cxx:222
 AliAnalysisMuMuConfig.cxx:223
 AliAnalysisMuMuConfig.cxx:224
 AliAnalysisMuMuConfig.cxx:225
 AliAnalysisMuMuConfig.cxx:226
 AliAnalysisMuMuConfig.cxx:227
 AliAnalysisMuMuConfig.cxx:228
 AliAnalysisMuMuConfig.cxx:229
 AliAnalysisMuMuConfig.cxx:230
 AliAnalysisMuMuConfig.cxx:231
 AliAnalysisMuMuConfig.cxx:232
 AliAnalysisMuMuConfig.cxx:233
 AliAnalysisMuMuConfig.cxx:234
 AliAnalysisMuMuConfig.cxx:235
 AliAnalysisMuMuConfig.cxx:236
 AliAnalysisMuMuConfig.cxx:237
 AliAnalysisMuMuConfig.cxx:238
 AliAnalysisMuMuConfig.cxx:239
 AliAnalysisMuMuConfig.cxx:240
 AliAnalysisMuMuConfig.cxx:241
 AliAnalysisMuMuConfig.cxx:242
 AliAnalysisMuMuConfig.cxx:243
 AliAnalysisMuMuConfig.cxx:244
 AliAnalysisMuMuConfig.cxx:245
 AliAnalysisMuMuConfig.cxx:246
 AliAnalysisMuMuConfig.cxx:247
 AliAnalysisMuMuConfig.cxx:248
 AliAnalysisMuMuConfig.cxx:249
 AliAnalysisMuMuConfig.cxx:250
 AliAnalysisMuMuConfig.cxx:251
 AliAnalysisMuMuConfig.cxx:252
 AliAnalysisMuMuConfig.cxx:253
 AliAnalysisMuMuConfig.cxx:254
 AliAnalysisMuMuConfig.cxx:255
 AliAnalysisMuMuConfig.cxx:256
 AliAnalysisMuMuConfig.cxx:257
 AliAnalysisMuMuConfig.cxx:258
 AliAnalysisMuMuConfig.cxx:259
 AliAnalysisMuMuConfig.cxx:260
 AliAnalysisMuMuConfig.cxx:261
 AliAnalysisMuMuConfig.cxx:262
 AliAnalysisMuMuConfig.cxx:263
 AliAnalysisMuMuConfig.cxx:264
 AliAnalysisMuMuConfig.cxx:265
 AliAnalysisMuMuConfig.cxx:266
 AliAnalysisMuMuConfig.cxx:267
 AliAnalysisMuMuConfig.cxx:268
 AliAnalysisMuMuConfig.cxx:269
 AliAnalysisMuMuConfig.cxx:270