diff --git a/GlobalFunctions.hh.md b/GlobalFunctions.hh.md index 01c30df..00e8f6f 100644 --- a/GlobalFunctions.hh.md +++ b/GlobalFunctions.hh.md @@ -1,40 +1,57 @@ +# Global functions +**TODO** +#define for_indexed(...) for_indexed_v(i, __VA_ARGS__) +#define for_indexed_v(v, ...) for(bool _i_ = true, _break_ = false; _i_;) for(size_t v = 0; _i_; _i_ = false) for(__VA_ARGS__) if(_break_) break; else for(bool _j_ = true; _j_;) for(_break_ = true; _j_; _j_ = false) for(bool _k_ = true; _k_; v++, _k_ = false, _break_ = false) -## Global variables: - +# Global variables +### Decay Options +* const bool KshortChannel = [GetKSfromExePath()](bool-getksfromexepath) * const bool SplitDDandLL = KshortChannel ? true : false //for pi0 SplitDDandLL is always false! -* const bool Kst2Kpluspi0Resolved = !KshortChannel //keep the old variables -* but set global! -* const bool Kst2Kpluspi0Merged = false -* const bool Kst2Kspiplus = KshortChannel -* const bool smallSample = false +* std::string TheDecay = (KshortChannel ? "KshortPiplus" : "KplusPi0Resolved") +* const bool Kst2Kpluspi0Resolved = !KshortChannel +* const bool Kst2Kpluspi0Merged = false //We do not use merged pi0, so set to false. This option is pretty much obsolete. +* const bool Kst2Kspiplus = KshortChannel //David's option, no clue what it is good for -### Paths +### Paths +**Hardcoded paths to the folders with data** * const std::string path_to_data = "/auto/data/dgerick/B2Kstmumu" * const std::string path_to_output_KshortPiplus = "/auto/data/dgerick/B2Kstmumu" * const std::string path_to_output_KplusPizero = "/home/lhcb/kopecna/B2KstarMuMu/data" * const std::string thePath = Kst2Kspiplus ? path_to_output_KshortPiplus : path_to_output_KplusPizero -### TODO + +### Basic options +* const bool smallSample = false //option that used to be used in testing, somewhat obsolete but can be easily added * const bool UseDTF = KshortChannel ? true : true //use mass and momenta of particles obtained by DTF? -* const bool UsePDGmIn4Dvectors = KshortChannel ? false : true -* const bool ReweightByRefChannel = KshortChannel ? true : true -* const bool AlwaysUseRefChannelData = KshortChannel ? true : true -* const bool Use2017 = KshortChannel ? true : true -* const bool Use2018 = KshortChannel ? true : true -* const bool UsePIDgen = KshortChannel ? true : false -* const UInt_t firstnBins = 75 -* const UInt_t secondnBins = 50 -* const double firstMCrange[2] = {-0.5 -* 149.5} -* const std::string firstMClatex = KshortChannel ? "N^{Long}_{Tracks}" : "N^{Long}_{Tracks}" -* const bool UseBKGCAT = KshortChannel ? true : false -* const bool pi0TM = true -* const bool gammaTMdefault = false -* const bool SplitInQ2 = KshortChannel ? false : false -* TString TMVAmethod = KshortChannel ? "BDTG" : "MLP" //used TMVA method -* int verboseLevel = 2 +* const bool UsePDGmIn4Dvectors = KshortChannel ? false : true //Use PDG values when calculating four-momenta or use the reconstructed mass? +* const bool ReweightByRefChannel = KshortChannel ? true : true //Pretty much obsolete, always use reference channel to reweight +* const bool AlwaysUseRefChannelData = KshortChannel ? true : true // same as above +* const bool Use2017 = KshortChannel ? true : true //Relic from 2017, when we were adding new data +* const bool Use2018 = KshortChannel ? true : true //Relic from 2018, when we were adding new data +* const bool UsePIDgen = KshortChannel ? true : false //In KS, they used PID weights on top of the 2D weights in MC + +### Weighting options + +const std::string firstMCweight = (KshortChannel ? "nLongTracks" : "nLongTracks") //Name of the branch of the first weight +const std::string seconMCweight = KshortChannel ? (UseDTF ? "B_plus_PT_DTF" : "B_plus_PT") : (UseDTF ? "B_plus_PT_DTF" : "B_plus_PT") //Name of the branch of the second weight +const UInt_t firstnBins = 75 //number of bins in the weighting histogram +const UInt_t secondnBins = 50 //number of bins in the weighting histogram +const double firstMCrange[2] = {-0.5, 149.5} //range of the weighting histogram +const double seconMCrange[2] = {TMath::Log(1500.), TMath::Log(50000.)} //range of the weighting histogram +const std::string firstMClatex = KshortChannel ? "N^{Long}_{Tracks}" : "N^{Long}_{Tracks}" //Latex names of the weight histogram +const std::string seconMClatex = KshortChannel ? "p_{T}(B^{+}) ( MeV/c )" : "p_{T}(B^{+}) ( MeV/c )" //Latex names of the weight histogram + +### Truth-matching options +* const bool UseBKGCAT = KshortChannel ? true : false //Use background category from [TupleToolMCBackgroundInfo](https://twiki.cern.ch/twiki/bin/view/LHCb/TupleToolMCBackgroundInfo) +* const bool pi0TM = true //Truth-match pi0? +* const std::string TMtag = UseBKGCAT ? "" : "_TM" + std::string(pi0TM ? "" : "_noPi0TM") +* const std::string TMbranch = "TMed" + std::string(UseBKGCAT ? "BKGCAT" : "") + std::string(pi0TM ? "" : "_noPi0") +* const std::string gammaTMbranch = "TM_gammas" + std::string(pi0TM ? "" : "_noPi0") //name of the branch with pi0 truth-matching ID +* const bool gammaTMdefault = false //Truth-match gammas? ### Cuts + + * const double cut_DTF_status = 0.5 * const double cut_DTF_chi2 = 200.0 * const double K_star_plus_mass_difference = 100.0 //MeV //difference between K* mass and PDG K* mass @@ -60,7 +77,9 @@ * const double cut_muon_ProbNNmu = 0.25 * const double cut_K_plus_ProbNNk = 0.25 * const double cut_gamma_CL = 0.15 - +* const bool SplitInQ2 = KshortChannel ? false : false +* TString TMVAmethod = KshortChannel ? "BDTG" : "MLP" //used TMVA method +* int verboseLevel = 2 # Classes @@ -70,80 +89,18 @@ # Functions and their parameters: ### bool GetKSfromExePath() - -* **Parameters** - * -* **Return** - -### if () - -* **Parameters** - * getcwd -* **Return** - -### const bool KshortChannel = GetKSfromExePath() - -* **Parameters** - * ); // false := pi0 channel -* **Return** - -### std::string TheDecay = () - -* **Parameters** - * KshortChannel ? "KshortPiplus" : "KplusPi0Resolved"); -* **Return** - -### const std::string firstMCweight = () - -* **Parameters** - * KshortChannel ? "nLongTracks" : "nLongTracks"); -* **Return** - -### const std::string seconMCweight = KshortChannel ? () - -* **Parameters** - * UseDTF ? "B_plus_PT_DTF" : "B_plus_PT") : -* **Return** - -### const double seconMCrange[2] = {TMath::Log() - -* **Parameters** - * 1500.) - * TMath::Log -* **Return** - -### const std::string seconMClatex = KshortChannel ? "p_{T}() - -* **Parameters** - * B^{+}) -* **Return** - -### const std::string TMtag = UseBKGCAT ? "" : "_TM" + std::string() - -* **Parameters** - * pi0TM ? "" : "_noPi0TM"); -* **Return** - -### const std::string TMbranch = "TMed" + std::string() - -* **Parameters** - * UseBKGCAT ? "BKGCAT" : "") + std::string -* **Return** - -### const std::string gammaTMbranch = "TM_gammas" + std::string() - -* **Parameters** - * pi0TM ? "" : "_noPi0"); * **Return** + * Returns 1 if the current directory is in davids folder, else returns 0 ### bool isTM() - +Takes the truth-matching response and checks whether the event passes the selection. It is useful as there are different ways how to truth-match, so this returns the truth-matching response based on the inputs. * **Parameters** * std::string customTMbranch * bool TM * bool gammaTM * int gTM * **Return** + * 1 if event passes truthmatching, 0 if not ### inline bool exists_test () @@ -296,28 +253,28 @@ ### void printVector () * **Parameters** - * std::vector vector + * std::vector\ vector * **Return** ### void printVector () * **Parameters** - * std::vector vector + * std::vector\ vector * **Return** ### void printVector () * **Parameters** - * std::vector vector + * std::vector\ vector * **Return** ### void printVector () * **Parameters** - * std::vector vector + * std::vector\ vector * **Return** -### std::vector yearsMC () +### std::vector\ yearsMC () * **Parameters** * bool Reference = false @@ -325,13 +282,13 @@ * int Run = 1 * **Return** -### std::vector yearsData () +### std::vector\ yearsData () * **Parameters** * int Run = 1 * **Return** -### std::vector yearsVector () +### std::vector\ yearsVector () * **Parameters** * bool MC = false @@ -340,7 +297,7 @@ * int Run = 1 * **Return** -### std::vector yearsVectorInt() +### std::vector\ yearsVectorInt() * **Parameters** * bool MC = false @@ -349,13 +306,13 @@ * int Run = 1 * **Return** -### std::vector yearsInc() +### std::vector\ yearsInc() * **Parameters** * int Run * **Return** -### std::vector yearsBkgMC() +### std::vector\ yearsBkgMC() * **Parameters** * bool Reference