219 lines
6.1 KiB
C++
219 lines
6.1 KiB
C++
|
//main file for the angular analysis of the decay B+->Kst+mumu
|
||
|
//Due to the large number of tests, this file beame obsolete.
|
||
|
//I include it for legacy reasons
|
||
|
//Renata Kopecna
|
||
|
//david gerick
|
||
|
|
||
|
#include "BDTSelection.cpp"
|
||
|
#include "TMVAClassApp.cpp"
|
||
|
#include "MVA.cpp"
|
||
|
#include "MCtruthmatching.cpp"
|
||
|
#include "nTrackWeights.cpp"
|
||
|
|
||
|
#include "GlobalFunctions.hh"
|
||
|
#include "Paths.hpp"
|
||
|
#include "RooExpAndGauss/RooExpAndGauss.hpp"
|
||
|
#include "RooDoubleCB/RooDoubleCB.h"
|
||
|
|
||
|
using namespace std;
|
||
|
using namespace RooFit;
|
||
|
|
||
|
|
||
|
|
||
|
Int_t B2Kstmumu(Int_t Run = 1){
|
||
|
|
||
|
if(Run != 1 && Run != 2){
|
||
|
coutERROR("Invalid Run number given: " << Run << ". Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
//////////////////////////////
|
||
|
/// Pre-Selection
|
||
|
//////////////////////////////
|
||
|
|
||
|
|
||
|
///pre-select data samples
|
||
|
if(runAllSignalData(Run) == 0){
|
||
|
coutERROR("Preselection of data sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Preselection of data sample: DONE!");
|
||
|
|
||
|
|
||
|
///pre-select signal MC
|
||
|
if(runAllSignalMC(Run) == 0){
|
||
|
coutERROR("Preselection of MC sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Preselection of MC sample: DONE!");
|
||
|
|
||
|
|
||
|
///pre-select reference channel MC
|
||
|
if(Run != 2 && Kst2Kspiplus){
|
||
|
if(runAllRefMC(Run) == 0){
|
||
|
coutERROR("Preselection of reference MC sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Preselection of reference MC sample: DONE!");
|
||
|
}
|
||
|
else{
|
||
|
if(runAllRefMC(Run) == 0){
|
||
|
coutERROR("Preselection of reference MC sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Preselection of reference MC sample: DONE!");
|
||
|
}
|
||
|
|
||
|
|
||
|
///pre-select phase-space MC
|
||
|
if(runAllPHSPMC(Run) == 0){
|
||
|
coutERROR("Preselection of PHSP MC sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Preselection of PHSP MC sample: DONE!");
|
||
|
|
||
|
|
||
|
//////////////////////////////
|
||
|
/// Truth-Matching of MC samples
|
||
|
//////////////////////////////
|
||
|
|
||
|
|
||
|
///TM of signal decay MC
|
||
|
if(TruthMatchAll(false, false, Run) == 0){
|
||
|
coutERROR("Truthmatching of signal MC sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Truthmatching of signal channel MC sample: DONE!");
|
||
|
|
||
|
|
||
|
///TM of reference channel MC
|
||
|
if(Run != 2 && Kst2Kspiplus){
|
||
|
if(TruthMatchAll(true, false, Run) == 0){
|
||
|
coutERROR("Truthmatching of reference MC sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Truthmatching of reference channel MC sample: DONE!");
|
||
|
}
|
||
|
else{
|
||
|
if(TruthMatchAll(true, false, Run) == 0){
|
||
|
coutERROR("Truthmatching of reference MC sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Truthmatching of reference channel MC sample: DONE!");
|
||
|
}
|
||
|
|
||
|
///TM of PHSP MC
|
||
|
if(TruthMatchAll(false, true, Run) == 0){
|
||
|
coutERROR("Truthmatching of PHSP MC sample not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Truthmatching of PHSP MC sample: DONE!");
|
||
|
|
||
|
|
||
|
//////////////////////////////
|
||
|
/// Weighting of data and re-weighting of MC
|
||
|
//////////////////////////////
|
||
|
|
||
|
|
||
|
///sWeights of data is produced and signal channel MC is re-weighted
|
||
|
if(WeightAll(true, Run) == 0){
|
||
|
coutERROR("Weighting the MC sample by nTracks and p_T(B+) of sWeighted data not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Weighting the MC sample by nTracks and p_T(B+) of sWeighted data: DONE!");
|
||
|
|
||
|
|
||
|
///re-weight the reference channel MC against sWeighted data
|
||
|
if(Run != 2 && Kst2Kspiplus){
|
||
|
if(ReweightReferenceMC(true, Run) == 0){
|
||
|
coutERROR("Reweighting of Reference MC did not succeed. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Reweighting of Reference MC sample: DONE!");
|
||
|
}
|
||
|
else{
|
||
|
if(ReweightReferenceMC(true, Run) == 0){
|
||
|
coutERROR("Reweighting of Reference MC did not succeed. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Reweighting of Reference MC sample: DONE!");
|
||
|
|
||
|
}
|
||
|
|
||
|
///re-weight the phase-space MC against sWeighted data
|
||
|
if(ReweightPHSPMC(true, Run) == 0){
|
||
|
coutERROR("Reweighting of PHSP MC did not succeed. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
///compare all variables (signal channel MC vs. data) used for BDT training
|
||
|
/* TODO: use python
|
||
|
if(compareAll(Run) == 0){
|
||
|
coutERROR("Comparing variables of interest in weighted MC and sWeighted data not successfull. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("Comparing variables of interest in weighted MC and sWeighted data: DONE!");
|
||
|
*/
|
||
|
|
||
|
//////////////////////////////
|
||
|
/// BDT training
|
||
|
//////////////////////////////
|
||
|
if (Kst2Kspiplus){
|
||
|
if (RunDDandLLKshort(Run) ==0){
|
||
|
coutERROR("BDT training not succesful. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("BDT training succesful: DONE!");
|
||
|
|
||
|
}
|
||
|
else{
|
||
|
if (RunKplusPizeroResolved(Run) ==0){
|
||
|
coutERROR("BDT training not succesful. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("BDT training succesful: DONE!");
|
||
|
}
|
||
|
|
||
|
|
||
|
//////////////////////////////
|
||
|
/// BDT evaluation
|
||
|
//////////////////////////////
|
||
|
if(TMVAClassApp(Run) == 0){
|
||
|
coutERROR("TMVAClassApp failed to evaluate BDT response. Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
else coutInfo("TMVAClassApp succesfully evaulatued the BDT response: DONE!");
|
||
|
|
||
|
return 1;
|
||
|
|
||
|
}
|
||
|
|
||
|
|
||
|
Int_t CalculateAllEfficiencies(Int_t Run =1){ //TODO: WIP
|
||
|
//BDT
|
||
|
//MC
|
||
|
//preSelection
|
||
|
//TruthMatching
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
|
||
|
Int_t main(Int_t argc, char* argv[]){
|
||
|
|
||
|
if(argc != 2){
|
||
|
coutERROR("Give exactly 1 argument: (" << argc - 1 << " given): [1] Run number ! For example: ./B2Kstmumu 1");
|
||
|
coutERROR("Exit program!");
|
||
|
return 0;
|
||
|
}
|
||
|
|
||
|
|
||
|
Int_t Run = atoi(argv[1]);
|
||
|
std::cout << "\tFor Run " << Run;
|
||
|
if (smallSample) std::cout << ": small sample only";
|
||
|
std::cout << "." << endl;
|
||
|
|
||
|
return B2Kstmumu(Run);
|
||
|
}
|
||
|
|