From 26f0adb5cf8243c1a2b840b7f6aee3c60dbca1b6 Mon Sep 17 00:00:00 2001 From: Claudio Date: Mon, 25 Jan 2016 16:17:39 +0100 Subject: [PATCH] First Production Round Crab config files for microAOD and ntuple production new file: microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt - Golden JSON file for 13TeV Data @25ns modified: microAODProduction/plugins/SyncTreeProducer.cc - New string parameter for Sample Type: MC, DataRunC,DataRunD - Auto trigger paths selection --- Analysis/include/SelectionResults.h | 6 +- HHbbTauTau.files | 20 +- RunTools/source/Scan.C | 2 +- TreeProduction/plugins/ElectronBlock.cc | 6 +- TreeProduction/plugins/EventBlock.cc | 4 +- TreeProduction/plugins/GenEventBlock.cc | 2 +- TreeProduction/plugins/GenJetBlock.cc | 2 +- TreeProduction/plugins/GenMETBlock.cc | 2 +- TreeProduction/plugins/GenParticleBlock.cc | 2 +- TreeProduction/plugins/JetBlock.cc | 4 +- TreeProduction/plugins/METBlock.cc | 2 +- TreeProduction/plugins/MuonBlock.cc | 6 +- TreeProduction/plugins/PFCandBlock.cc | 4 +- TreeProduction/plugins/VertexBlock.cc | 4 +- microAODProduction/batchSub/Submitter | 7 +- .../batchSub/batchSubmission.pbs | 2 +- microAODProduction/crab/DY_crab.py | 17 ++ microAODProduction/crab/DiBosons_crab.py | 74 +++++ microAODProduction/crab/Hhh_550_crab.py | 18 ++ microAODProduction/crab/Hhh_crab.py | 121 ++++++++ microAODProduction/crab/RunC_crab.py | 18 ++ microAODProduction/crab/RunD__sync_crab.py | 18 ++ microAODProduction/crab/RunD_crab.py | 18 ++ microAODProduction/crab/SyncTuple_crab.py | 6 +- microAODProduction/crab/SyncTuple_v2_crab.py | 17 ++ microAODProduction/crab/TTBar_crab.py | 17 ++ microAODProduction/crab/TTBar_sync_crab.py | 18 ++ microAODProduction/crab/WJets_crab.py | 17 ++ microAODProduction/interface/Candidate.h | 37 ++- microAODProduction/interface/Htautau_2015.h | 31 +- microAODProduction/interface/SyncTree.h | 6 +- ...3TeV_PromptReco_Collisions15_25ns_JSON.txt | 1 + microAODProduction/plugins/BuildFile.xml | 1 + .../plugins/SyncTreeProducer.cc | 277 +++++++++++++++--- microAODProduction/python/electronID_cfg.py | 35 ++- .../python/miniAOD_skim_EleID.py | 27 +- .../python/miniAOD_skim_EleID_DATA.py | 167 +++++++++++ .../python/miniAOD_skim_Sync.py | 175 +++++++++++ .../python/syncTreeProducer_cfg.py | 58 +++- 39 files changed, 1124 insertions(+), 125 deletions(-) mode change 100644 => 100755 RunTools/source/Scan.C mode change 100644 => 100755 TreeProduction/plugins/EventBlock.cc mode change 100644 => 100755 TreeProduction/plugins/GenEventBlock.cc mode change 100644 => 100755 TreeProduction/plugins/GenJetBlock.cc mode change 100644 => 100755 TreeProduction/plugins/GenMETBlock.cc mode change 100644 => 100755 TreeProduction/plugins/GenParticleBlock.cc mode change 100644 => 100755 TreeProduction/plugins/JetBlock.cc mode change 100644 => 100755 TreeProduction/plugins/METBlock.cc mode change 100644 => 100755 TreeProduction/plugins/PFCandBlock.cc mode change 100644 => 100755 TreeProduction/plugins/VertexBlock.cc create mode 100755 microAODProduction/crab/DY_crab.py create mode 100755 microAODProduction/crab/DiBosons_crab.py create mode 100644 microAODProduction/crab/Hhh_550_crab.py create mode 100755 microAODProduction/crab/Hhh_crab.py create mode 100755 microAODProduction/crab/RunC_crab.py create mode 100755 microAODProduction/crab/RunD__sync_crab.py create mode 100755 microAODProduction/crab/RunD_crab.py create mode 100755 microAODProduction/crab/SyncTuple_v2_crab.py create mode 100755 microAODProduction/crab/TTBar_crab.py create mode 100644 microAODProduction/crab/TTBar_sync_crab.py create mode 100755 microAODProduction/crab/WJets_crab.py create mode 100644 microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt create mode 100755 microAODProduction/python/miniAOD_skim_EleID_DATA.py create mode 100755 microAODProduction/python/miniAOD_skim_Sync.py diff --git a/Analysis/include/SelectionResults.h b/Analysis/include/SelectionResults.h index a4472064..18a78426 100755 --- a/Analysis/include/SelectionResults.h +++ b/Analysis/include/SelectionResults.h @@ -92,11 +92,13 @@ struct SelectionResultsV2 { virtual ~SelectionResultsV2() {} CandidateV2Ptr higgs; - //sv_fit::CombinedFitResults svfitResults; + Float_t numtruepileupinteractions; + bool Zveto; + sv_fit::FitResults svfitResult; //kinematic_fit::four_body::FitResults kinfitResults; CandidateV2PtrVector jets; CandidateV2PtrVector jetsPt20; - CandidateV2PtrVector bjets_all; + CandidateV2PtrVector bjets; CandidateV2PtrVector retagged_bjets; VertexV2PtrVector vertices; MissingETPtr pfMET; diff --git a/HHbbTauTau.files b/HHbbTauTau.files index 4b469c88..17eb6657 100755 --- a/HHbbTauTau.files +++ b/HHbbTauTau.files @@ -210,6 +210,13 @@ microAODProduction/BuildFile.xml microAODProduction/batchSub/Submitter microAODProduction/batchSub/batchSubmission.pbs microAODProduction/crab/crab3_cfg.py +microAODProduction/crab/DiBosons_crab.py +microAODProduction/crab/DY_crab.py +microAODProduction/crab/Hhh_crab.py +microAODProduction/crab/RunD__sync_crab.py +microAODProduction/crab/RunD_crab.py +microAODProduction/crab/TTBar_crab.py +microAODProduction/crab/TTBar_sync_crab.py microAODProduction/data/dummy.txt microAODProduction/interface/PatVertex.h microAODProduction/interface/BaseEDAnalyzer.h @@ -226,7 +233,9 @@ microAODProduction/plugins/SyncTreeProducer.cc microAODProduction/python/electronID_cfg.py microAODProduction/python/electronsAnalyzer_cfi.py microAODProduction/python/miniAOD_skim.py +microAODProduction/python/miniAOD_skim_Sync.py microAODProduction/python/miniAOD_skim_EleID.py +microAODProduction/python/miniAOD_skim_EleID_DATA.py microAODProduction/python/syncTreeProducer_cfg.py microAODProduction/src/classes.h microAODProduction/src/classes_def.xml @@ -395,12 +404,7 @@ miniAOD_skim.py miniAOD_skim_EleID.py electronID_cfg.py microAODProduction/interface/SyncTree.h -pairs2.log -pairs3.log -pairs4.log -pairs5.log -pairs6.log -pairs7.log -pairs10.log -pairs9.log +differentEvents.log +differentEvents2.log microAODProduction/crab/SyncTuple_crab.py +svFit_pfMET_1.log diff --git a/RunTools/source/Scan.C b/RunTools/source/Scan.C old mode 100644 new mode 100755 index 027411b5..8334f0de --- a/RunTools/source/Scan.C +++ b/RunTools/source/Scan.C @@ -27,7 +27,7 @@ void Scan(UInt_t event_id, const char* file_name) TFile f(file_name, "READ"); std::ostringstream ss; ss << "EventId==" << event_id; - const TSQLResult* result = events->Query("EventId", ss.str().c_str()); + const TSQLResult* result = events->Query("evt", ss.str().c_str()); if(result->GetRowCount() > 0) std::cerr << "found in " << file_name << std::endl; } diff --git a/TreeProduction/plugins/ElectronBlock.cc b/TreeProduction/plugins/ElectronBlock.cc index a824b3b5..d0287a47 100755 --- a/TreeProduction/plugins/ElectronBlock.cc +++ b/TreeProduction/plugins/ElectronBlock.cc @@ -51,9 +51,9 @@ #include "FWCore/ParameterSet/interface/ProcessDesc.h" #include "CommonTools/UtilAlgos/interface/TFileService.h" -#include "HHbbTauTau/PatProduction/interface/PatVertex.h" -#include "HHbbTauTau/TreeProduction/interface/Electron.h" -#include "HHbbTauTau/TreeProduction/interface/TriggerTools.h" +#include "../../PatProduction/interface/PatVertex.h" +#include "../../TreeProduction/interface/Electron.h" +#include "../../TreeProduction/interface/TriggerTools.h" class ElectronBlock : public edm::EDAnalyzer { public: diff --git a/TreeProduction/plugins/EventBlock.cc b/TreeProduction/plugins/EventBlock.cc old mode 100644 new mode 100755 index 98703b40..c57c51aa --- a/TreeProduction/plugins/EventBlock.cc +++ b/TreeProduction/plugins/EventBlock.cc @@ -43,8 +43,8 @@ #include "SimDataFormats/PileupSummaryInfo/interface/PileupSummaryInfo.h" -#include "HHbbTauTau/PatProduction/interface/PatVertex.h" -#include "HHbbTauTau/TreeProduction/interface/Event.h" +#include "../../PatProduction/interface/PatVertex.h" +#include "../../TreeProduction/interface/Event.h" class EventBlock : public edm::EDAnalyzer { public: diff --git a/TreeProduction/plugins/GenEventBlock.cc b/TreeProduction/plugins/GenEventBlock.cc old mode 100644 new mode 100755 index ada9f877..479d5027 --- a/TreeProduction/plugins/GenEventBlock.cc +++ b/TreeProduction/plugins/GenEventBlock.cc @@ -39,7 +39,7 @@ #include "SimDataFormats/GeneratorProducts/interface/GenFilterInfo.h" #include "SimDataFormats/GeneratorProducts/interface/LHEEventProduct.h" -#include "HHbbTauTau/TreeProduction/interface/GenEvent.h" +#include "../../TreeProduction/interface/GenEvent.h" class GenEventBlock : public edm::EDAnalyzer { public: diff --git a/TreeProduction/plugins/GenJetBlock.cc b/TreeProduction/plugins/GenJetBlock.cc old mode 100644 new mode 100755 index 12abe8a7..7a6dcbb4 --- a/TreeProduction/plugins/GenJetBlock.cc +++ b/TreeProduction/plugins/GenJetBlock.cc @@ -37,7 +37,7 @@ #include "DataFormats/JetReco/interface/GenJetCollection.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "HHbbTauTau/TreeProduction/interface/GenJet.h" +#include "../../TreeProduction/interface/GenJet.h" class GenJetBlock : public edm::EDAnalyzer { public: diff --git a/TreeProduction/plugins/GenMETBlock.cc b/TreeProduction/plugins/GenMETBlock.cc old mode 100644 new mode 100755 index 1e4b1302..b184dc27 --- a/TreeProduction/plugins/GenMETBlock.cc +++ b/TreeProduction/plugins/GenMETBlock.cc @@ -37,7 +37,7 @@ #include "DataFormats/METReco/interface/GenMET.h" #include "DataFormats/METReco/interface/GenMETFwd.h" -#include "HHbbTauTau/TreeProduction/interface/GenMET.h" +#include "../../TreeProduction/interface/GenMET.h" class GenMETBlock : public edm::EDAnalyzer { public: diff --git a/TreeProduction/plugins/GenParticleBlock.cc b/TreeProduction/plugins/GenParticleBlock.cc old mode 100644 new mode 100755 index 5068820c..1decb349 --- a/TreeProduction/plugins/GenParticleBlock.cc +++ b/TreeProduction/plugins/GenParticleBlock.cc @@ -35,7 +35,7 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "DataFormats/HepMCCandidate/interface/GenParticle.h" -#include "HHbbTauTau/TreeProduction/interface/GenParticle.h" +#include "../../TreeProduction/interface/GenParticle.h" #include diff --git a/TreeProduction/plugins/JetBlock.cc b/TreeProduction/plugins/JetBlock.cc old mode 100644 new mode 100755 index 53138251..57c85ab3 --- a/TreeProduction/plugins/JetBlock.cc +++ b/TreeProduction/plugins/JetBlock.cc @@ -49,8 +49,8 @@ #include "CommonTools/UtilAlgos/interface/TFileService.h" #include "PhysicsTools/SelectorUtils/interface/PFJetIDSelectionFunctor.h" -#include "HHbbTauTau/TreeProduction/interface/Jet.h" -#include "HHbbTauTau/TreeProduction/interface/TriggerTools.h" +#include "../../TreeProduction/interface/Jet.h" +#include "../../TreeProduction/interface/TriggerTools.h" #define SIMPLE_VAR(type, name) jetTree.name() = jet.bDiscriminator(#name); diff --git a/TreeProduction/plugins/METBlock.cc b/TreeProduction/plugins/METBlock.cc old mode 100644 new mode 100755 index fc39c9b6..b79cb36c --- a/TreeProduction/plugins/METBlock.cc +++ b/TreeProduction/plugins/METBlock.cc @@ -36,7 +36,7 @@ #include "FWCore/MessageLogger/interface/MessageLogger.h" #include "DataFormats/PatCandidates/interface/MET.h" -#include "HHbbTauTau/TreeProduction/interface/MET.h" +#include "../../TreeProduction/interface/MET.h" class METBlock : public edm::EDAnalyzer { public: diff --git a/TreeProduction/plugins/MuonBlock.cc b/TreeProduction/plugins/MuonBlock.cc index fd5e3df8..4791644e 100755 --- a/TreeProduction/plugins/MuonBlock.cc +++ b/TreeProduction/plugins/MuonBlock.cc @@ -48,10 +48,10 @@ #include "DataFormats/Common/interface/Handle.h" #include "DataFormats/Provenance/interface/EventID.h" -#include "HHbbTauTau/PatProduction/interface/PatVertex.h" +#include "../../PatProduction/interface/PatVertex.h" -#include "HHbbTauTau/TreeProduction/interface/Muon.h" -#include "HHbbTauTau/TreeProduction/interface/TriggerTools.h" +#include "../../TreeProduction/interface/Muon.h" +#include "../../TreeProduction/interface/TriggerTools.h" class MuonBlock : public edm::EDAnalyzer { public: diff --git a/TreeProduction/plugins/PFCandBlock.cc b/TreeProduction/plugins/PFCandBlock.cc old mode 100644 new mode 100755 index abf1230f..2d048470 --- a/TreeProduction/plugins/PFCandBlock.cc +++ b/TreeProduction/plugins/PFCandBlock.cc @@ -49,8 +49,8 @@ #include "Utilities/General/interface/FileInPath.h" -#include "HHbbTauTau/TreeProduction/interface/PFCand.h" -#include "HHbbTauTau/TreeProduction/interface/TriggerTools.h" +#include "../../TreeProduction/interface/PFCand.h" +#include "../../TreeProduction/interface/TriggerTools.h" class PFCandBlock : public edm::EDAnalyzer { public: diff --git a/TreeProduction/plugins/VertexBlock.cc b/TreeProduction/plugins/VertexBlock.cc old mode 100644 new mode 100755 index e1fad3ef..829a3e5f --- a/TreeProduction/plugins/VertexBlock.cc +++ b/TreeProduction/plugins/VertexBlock.cc @@ -31,9 +31,9 @@ #include "FWCore/ServiceRegistry/interface/Service.h" #include "CommonTools/UtilAlgos/interface/TFileService.h" #include "FWCore/MessageLogger/interface/MessageLogger.h" -#include "HHbbTauTau/PatProduction/interface/PatVertex.h" +#include "../../PatProduction/interface/PatVertex.h" -#include "HHbbTauTau/TreeProduction/interface/Vertex.h" +#include "../../TreeProduction/interface/Vertex.h" class VertexBlock : public edm::EDAnalyzer { public: diff --git a/microAODProduction/batchSub/Submitter b/microAODProduction/batchSub/Submitter index 267cd209..fef7742e 100755 --- a/microAODProduction/batchSub/Submitter +++ b/microAODProduction/batchSub/Submitter @@ -3,7 +3,7 @@ STORAGE=/lustre/cms/store/user/caputo/HHbbtautau/Run2 if [ $# -lt 3 ] ; then - echo "Usage: $0 file_list_path output_folder python_cfg" + echo "Usage: $0 file_list_path output_folder sampleType [Spring15MC, Run2015B, Run2015C, Run2015D] python_cfg" echo "Choose between this folder: " ls -d $STORAGE* exit @@ -13,7 +13,8 @@ WORKING_PATH=$PWD FILE_LIST_PATH=$1 OUTPUT_FOLDER=$2 LUSTRE_PATH=$STORAGE/$OUTPUT_FOLDER -EXE_NAME=$3 +SAMPLE_TYPE=$3 +EXE_NAME=$4 if [ ! -d "$LUSTRE_PATH" ];then mkdir -p $LUSTRE_PATH @@ -30,5 +31,5 @@ fi for NAME in $JOB_LIST do - qsub -q local -l walltime=00:50:00 -N $NAME -o $LUSTRE_PATH -e $LUSTRE_PATH -v WORKSPACE=$WORKING_PATH,ARCH=$ARCH,PROGRAMM=$WORKING_PATH/$EXE_NAME,NAME="$NAME",OUTPUT_PATH="$LUSTRE_PATH",FILE_LIST=$FILE_LIST_PATH$NAME.txt microAODProduction/batchSub/batchSubmission.pbs + qsub -q local -l walltime=40:00:00 -N $NAME -o $LUSTRE_PATH -e $LUSTRE_PATH -v WORKSPACE=$WORKING_PATH,ARCH=$ARCH,PROGRAMM=$WORKING_PATH/$EXE_NAME,NAME="$NAME",SampleType=$SAMPLE_TYPE,OUTPUT_PATH="$LUSTRE_PATH",FILE_LIST=$FILE_LIST_PATH$NAME.txt microAODProduction/batchSub/batchSubmission.pbs done diff --git a/microAODProduction/batchSub/batchSubmission.pbs b/microAODProduction/batchSub/batchSubmission.pbs index f5740c67..a43e4efa 100644 --- a/microAODProduction/batchSub/batchSubmission.pbs +++ b/microAODProduction/batchSub/batchSubmission.pbs @@ -23,7 +23,7 @@ eval `scramv1 runtime -sh` cd - echo "$NAME $( date )" >> $OUTPUT_PATH/job_start.log -cmsRun $PROGRAMM fileList=$WORKSPACE/$FILE_LIST outputFile=$OUTPUT_PATH/$NAME.root maxEvents=-1 > $OUTPUT_PATH/${NAME}_detail.log 2> $OUTPUT_PATH/${NAME}.log +cmsRun $PROGRAMM sampleType=$SampleType fileList=$WORKSPACE/$FILE_LIST outputFile=$OUTPUT_PATH/$NAME.root maxEvents=-1 > $OUTPUT_PATH/${NAME}_detail.log 2> $OUTPUT_PATH/${NAME}.log RESULT=$? diff --git a/microAODProduction/crab/DY_crab.py b/microAODProduction/crab/DY_crab.py new file mode 100755 index 00000000..24b1c711 --- /dev/null +++ b/microAODProduction/crab/DY_crab.py @@ -0,0 +1,17 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.requestName = 'DYJetsToLL_M-50' +config.General.workArea = 'DYJetsToLL' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_EleID.py' + +config.Data.inputDataset = '/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' +config.Data.inputDBS = 'global' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 15000 +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/FirstProduction/' # or '/store/group/' +config.Data.publication = True + +config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/crab/DiBosons_crab.py b/microAODProduction/crab/DiBosons_crab.py new file mode 100755 index 00000000..71780c1f --- /dev/null +++ b/microAODProduction/crab/DiBosons_crab.py @@ -0,0 +1,74 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.workArea = 'DiBosons' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_EleID.py' + +config.Data.inputDBS = 'global' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/FirstProduction/' # or '/store/group/' +config.Data.publication = True + +config.Site.storageSite = 'T2_IT_Bari' + +if __name__ == '__main__': + + from CRABAPI.RawCommand import crabCommand + from CRABClient.ClientExceptions import ClientException + from httplib import HTTPException + + + def submit(config): + try: + crabCommand('submit', config = config) + except HTTPException as hte: + print "Failed submitting task: %s" % (hte.headers) + except ClientException as cle: + print "Failed submitting task: %s" % (cle) + + ############################################################################################# + ## From now on that's what users should modify: this is the a-la-CRAB2 configuration part. ## + ############################################################################################# + + config.General.requestName = 'VVTo2L2Nu_13TeV' + config.Data.inputDataset = '/VVTo2L2Nu_13TeV_amcatnloFXFX_madspin_pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 5000 + submit(config) + + config.General.requestName = 'ZZTo2L2Q_13TeV' + config.Data.inputDataset = '/ZZTo2L2Q_13TeV_amcatnloFXFX_madspin_pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 10000 + submit(config) + + config.General.requestName = 'ZZTo4L_13TeV' + config.Data.inputDataset = '/ZZTo4L_13TeV-amcatnloFXFX-pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 7000 + submit(config) + + config.General.requestName = 'WWTo1L1Nu2Q_13TeV' + config.Data.inputDataset = '/WWTo1L1Nu2Q_13TeV_amcatnloFXFX_madspin_pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 4000 + submit(config) + + config.General.requestName = 'WZTo2L2Q_13TeV' + config.Data.inputDataset = '/WZTo2L2Q_13TeV_amcatnloFXFX_madspin_pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 18000 + submit(config) + + config.General.requestName = 'WZJets_13TeV' + config.Data.inputDataset = '/WZJets_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 10000 + submit(config) + + config.General.requestName = 'WZTo1L3Nu_13TeV' + config.Data.inputDataset = '/WZTo1L3Nu_13TeV_amcatnloFXFX_madspin_pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'WZTo1L1Nu2Q_13TeV' + config.Data.inputDataset = '/WZTo1L1Nu2Q_13TeV_amcatnloFXFX_madspin_pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 14000 + submit(config) + diff --git a/microAODProduction/crab/Hhh_550_crab.py b/microAODProduction/crab/Hhh_550_crab.py new file mode 100644 index 00000000..313484b6 --- /dev/null +++ b/microAODProduction/crab/Hhh_550_crab.py @@ -0,0 +1,18 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.workArea = 'GluGluToRadionToHHTo2B2Tau' +config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-550' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_EleID.py' + +config.Data.inputDBS = 'global' +config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-550_narrow_13TeV-madgraph/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' +config.Data.unitsPerJob = 1000 +config.Data.splitting = 'EventAwareLumiBased' +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/FirstProduction/' # or '/store/group/' +config.Data.publication = True + +config.Site.storageSite = 'T2_IT_Bari' + diff --git a/microAODProduction/crab/Hhh_crab.py b/microAODProduction/crab/Hhh_crab.py new file mode 100755 index 00000000..05c72e44 --- /dev/null +++ b/microAODProduction/crab/Hhh_crab.py @@ -0,0 +1,121 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.workArea = 'GluGluToRadionToHHTo2B2Tau' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_EleID.py' + +config.Data.inputDBS = 'global' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/FirstProduction/' # or '/store/group/' +config.Data.publication = True + +config.Site.storageSite = 'T2_IT_Bari' + + +if __name__ == '__main__': + + from CRABAPI.RawCommand import crabCommand + from CRABClient.ClientExceptions import ClientException + from httplib import HTTPException + + def submit(config): + try: + crabCommand('submit', config = config) + except HTTPException as hte: + print "Failed submitting task: %s" % (hte.headers) + except ClientException as cle: + print "Failed submitting task: %s" % (cle) + + ############################################################################################# + ## From now on that's what users should modify: this is the a-la-CRAB2 configuration part. ## + ############################################################################################# + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-250' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-250_narrow_13TeV-madgraph/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-260' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-260_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-270' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-270_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-280' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-280_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-300' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-300_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-320' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-320_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-340' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-340_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-350' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-350_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-400' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-400_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-450' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-450_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-500' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-500_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-550' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-550_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-600' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-600_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-650' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-650_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-700' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-700_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-800' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-800_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + config.General.requestName = 'GluGluToRadionToHHTo2B2Tau_M-900' + config.Data.inputDataset = '/GluGluToRadionToHHTo2B2Tau_M-900_narrow_13TeV-madgraph/RunIISpring15DR74-Asympt25ns_MCRUN2_74_V9-v1/MINIAODSIM' + config.Data.unitsPerJob = 1000 + submit(config) + + + diff --git a/microAODProduction/crab/RunC_crab.py b/microAODProduction/crab/RunC_crab.py new file mode 100755 index 00000000..733d8768 --- /dev/null +++ b/microAODProduction/crab/RunC_crab.py @@ -0,0 +1,18 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.requestName = 'RunC_micro_Sync_v2' +config.General.workArea = '2015Data' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_EleID_DATA.py' + +config.Data.inputDataset = '/SingleMuon/Run2015C_25ns-05Oct2015-v1/MINIAOD' +config.Data.inputDBS = 'global' +config.Data.lumiMask = '/cmshome/caputo/HH_bbTauTau/Run2/CMSSW_7_4_12_patch4/src/HHbbTauTau/microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 10000 +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/SecondProduction/' # or '/store/group/' +config.Data.publication = True + +config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/crab/RunD__sync_crab.py b/microAODProduction/crab/RunD__sync_crab.py new file mode 100755 index 00000000..10c59bdd --- /dev/null +++ b/microAODProduction/crab/RunD__sync_crab.py @@ -0,0 +1,18 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.requestName = 'RunD_SyncTree' +config.General.workArea = '2015Data' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/syncTreeProducer_cfg.py' +config.JobType.pyCfgParams = ['isData=True','runOnCrab=True','sampleType=Run2015D'] + +config.Data.inputDataset = '/SingleMuon/ccaputo-crab_RunD-ce4e02672c88fc064906a22e024aadae/USER' +config.Data.inputDBS = 'phys03' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 8000 +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/RunOnPublishedDataset/' # or '/store/group/' +config.Data.publication = False + +config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/crab/RunD_crab.py b/microAODProduction/crab/RunD_crab.py new file mode 100755 index 00000000..74252c33 --- /dev/null +++ b/microAODProduction/crab/RunD_crab.py @@ -0,0 +1,18 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.requestName = 'RunD_micro_Sync_v2' +config.General.workArea = '2015Data' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_EleID_DATA.py' + +config.Data.inputDataset = '/SingleMuon/Run2015D-PromptReco-v4/MINIAOD' +config.Data.inputDBS = 'global' +config.Data.lumiMask = '/cmshome/caputo/HH_bbTauTau/Run2/CMSSW_7_4_12_patch4/src/HHbbTauTau/microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 20000 +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/SecondProduction/' # or '/store/group/' +config.Data.publication = True + +config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/crab/SyncTuple_crab.py b/microAODProduction/crab/SyncTuple_crab.py index 93a23cde..e28729df 100755 --- a/microAODProduction/crab/SyncTuple_crab.py +++ b/microAODProduction/crab/SyncTuple_crab.py @@ -1,7 +1,7 @@ from CRABClient.UserUtilities import config config = config() -config.General.requestName = 'SUSYGluGluToHToTauTau_M160' +config.General.requestName = 'SUSYGluGluToHToTauTau_M160_METCov' config.General.workArea = 'SUSYGluGluToHToTauTau_M160' config.JobType.pluginName = 'Analysis' @@ -11,7 +11,7 @@ config.Data.inputDBS = 'global' config.Data.splitting = 'EventAwareLumiBased' config.Data.unitsPerJob = 5000 -config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/' # or '/store/group/' -config.Data.publication = False +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/151205_METCov/' # or '/store/group/' +config.Data.publication = True config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/crab/SyncTuple_v2_crab.py b/microAODProduction/crab/SyncTuple_v2_crab.py new file mode 100755 index 00000000..f0ad55c2 --- /dev/null +++ b/microAODProduction/crab/SyncTuple_v2_crab.py @@ -0,0 +1,17 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.requestName = 'SUSYGluGluToHToTauTau_M160_PAT_Sync' +config.General.workArea = 'SUSYGluGluToHToTauTau_M160' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_Sync.py' + +config.Data.inputDataset = '/SUSYGluGluToHToTauTau_M-160_TuneCUETP8M1_13TeV-pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' +config.Data.inputDBS = 'global' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 2000 +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/160108_PAT_Sync/' # or '/store/group/' +config.Data.publication = False + +config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/crab/TTBar_crab.py b/microAODProduction/crab/TTBar_crab.py new file mode 100755 index 00000000..390345c5 --- /dev/null +++ b/microAODProduction/crab/TTBar_crab.py @@ -0,0 +1,17 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.requestName = 'TTbar_ext3_SyncTree' +config.General.workArea = 'TTbar' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_Sync.py' + +config.Data.inputDataset = '/TT_TuneCUETP8M1_13TeV-powheg-pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2_ext3-v1/MINIAODSIM' +config.Data.inputDBS = 'global' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 40000 +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/FirstProduction/' # or '/store/group/' +config.Data.publication = True + +config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/crab/TTBar_sync_crab.py b/microAODProduction/crab/TTBar_sync_crab.py new file mode 100644 index 00000000..f0da489c --- /dev/null +++ b/microAODProduction/crab/TTBar_sync_crab.py @@ -0,0 +1,18 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.requestName = 'TTbar_ext3_SyncTree' +config.General.workArea = 'TTbar_SyncTree' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/syncTreeProducer_cfg.py' +config.JobType.pyCfgParams = ['isData=False','runOnCrab=True'] + +config.Data.inputDataset = '/TT_TuneCUETP8M1_13TeV-powheg-pythia8/ccaputo-crab_TTbar_ext3-2470bbdf15448d116b7dc09c605c0dbb/USER' +config.Data.inputDBS = 'phys03' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 40000 +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/RunOnPublishedDataset/' # or '/store/group/' +config.Data.publication = False + +config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/crab/WJets_crab.py b/microAODProduction/crab/WJets_crab.py new file mode 100755 index 00000000..fb8e6cf0 --- /dev/null +++ b/microAODProduction/crab/WJets_crab.py @@ -0,0 +1,17 @@ +from CRABClient.UserUtilities import config +config = config() + +config.General.requestName = 'WJetsToLNu' +config.General.workArea = 'WJetsToLNu' + +config.JobType.pluginName = 'Analysis' +config.JobType.psetName = '../python/miniAOD_skim_EleID.py' + +config.Data.inputDataset = '/WJetsToLNu_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/RunIISpring15MiniAODv2-74X_mcRun2_asymptotic_v2-v1/MINIAODSIM' +config.Data.inputDBS = 'global' +config.Data.splitting = 'EventAwareLumiBased' +config.Data.unitsPerJob = 50000 +config.Data.outLFNDirBase = '/store/user/ccaputo/HHbbtautau/Run2/FirstProduction/' # or '/store/group/' +config.Data.publication = True + +config.Site.storageSite = 'T2_IT_Bari' diff --git a/microAODProduction/interface/Candidate.h b/microAODProduction/interface/Candidate.h index e2841579..66104900 100755 --- a/microAODProduction/interface/Candidate.h +++ b/microAODProduction/interface/Candidate.h @@ -71,7 +71,7 @@ class CandidateV2 { CandidateV2PtrVector daughters; CandidateV2PtrVector finalStateDaughters; - const reco::RecoCandidate* ntupleObject; + const reco::LeafCandidate* ntupleObject; public: template @@ -82,10 +82,10 @@ class CandidateV2 { ntupleObject(&_ntupleObject) {} -// explicit CandidateV2(const ntuple::Jet& _ntupleObject) : -// type(TypeFromNtupleObject(_ntupleObject)), charge(UnknownCharge()), -// momentum(MakeLorentzVectorPtEtaPhiM(_ntupleObject.pt, _ntupleObject.eta, _ntupleObject.phi, _ntupleObject.mass)), -// has_vertexPosition(false), ntupleObject(&_ntupleObject) {} + explicit CandidateV2(const pat::Jet& _ntupleObject) : + type(TypeFromNtupleObject(_ntupleObject)), charge(UnknownCharge()), + momentum(MakeLorentzVectorPtEtaPhiM(_ntupleObject.pt(), _ntupleObject.eta(), _ntupleObject.phi(), _ntupleObject.mass())), + has_vertexPosition(false), ntupleObject(&_ntupleObject) {} CandidateV2(Type _type, const CandidateV2Ptr& daughter1, const CandidateV2Ptr& daughter2) : type(_type), has_vertexPosition(false), ntupleObject(nullptr) @@ -228,20 +228,41 @@ typedef std::shared_ptr MissingETPtr; class MissingET { public: template - explicit MissingET(const METtype& _ntupleObject) + MissingET(const METtype& _ntupleObject) :pt(_ntupleObject.pt()), phi(_ntupleObject.phi()), isPF(_ntupleObject.isPFMET()), ntupleObject(&_ntupleObject) { CovVector = METCovMatrixToVector(_ntupleObject.getSignificanceMatrix()); } + template + MissingET(const METtype& _ntupleObject,const reco::METCovMatrix& m) + :pt(_ntupleObject.pt()), px(_ntupleObject.px()), py(_ntupleObject.py()), + phi(_ntupleObject.phi()), isPF(_ntupleObject.isPFMET()), ntupleObject(&_ntupleObject) { + CovVector = METCovMatrixToVector(m); + } + //const reco::RecoCandidate& GetNtupleObject() const { return *ntupleObject; } const double& Pt() const { return pt; } + const double& Px() const { return px; } + const double& Py() const { return py; } const double& Phi() const { return phi; } const bool& isPFMET() const { return isPF; } const std::vector GetCovVector() const {return CovVector;} + template + const METtype& GetNtupleObject() const + { + if(!ntupleObject) + throw exception("Candidate is not associated with antuple object."); + const METtype* casted = dynamic_cast(ntupleObject); + if(!casted) + throw exception("Bad ntuple object type '") << typeid(METtype).name() << "'. Expected '" + << typeid(ntupleObject).name() << "'."; + return *casted; + } + private: - double pt; + double pt,px,py; double phi; bool isPF; const reco::RecoCandidate* ntupleObject; @@ -251,7 +272,7 @@ class MissingET { std::vector METCovMatrixToVector (const reco::METCovMatrix& m){ std::vector v(4); v[0] = m[0][0]; // xx - std::cout<<"\t xx = "<< m[0][0] << "\t xy = "< stringToDataSourceTypeMap = {{ "Spring15MC", DataSourceType::Spring15MC}, + { "Run2015B" , DataSourceType::Run2015B}, + { "Run2015C" , DataSourceType::Run2015C}, + { "Run2015D" , DataSourceType::Run2015D}}; + + std::ostream& operator<< (std::ostream& s, const DataSourceType& dataSourceType) { s << dataSourceTypeMap.at(dataSourceType); return s; @@ -66,8 +72,8 @@ const double DeltaR_triggerMatch = 0.5; // < namespace MuTau { namespace trigger { // https://twiki.cern.ch/twiki/bin/view/CMS/HiggsToTauTauWorking2015 - Trigger Session - const std::map> hltPathMaps = - {{analysis::DataSourceType::Spring15MC,{"HLT_IsoMu17_eta2p1"}}, + const std::map> hltPathMaps = + {{analysis::DataSourceType::Spring15MC,{"HLT_IsoMu17_eta2p1_v1"}}, {analysis::DataSourceType::Run2015B,{"HLT_IsoMu17_eta2p1_LooseIsoPFTau20_v2", "HLT_IsoMu24_eta2p1_v2"}}, {analysis::DataSourceType::Run2015C,{"HLT_IsoMu17_eta2p1_LooseIsoPFTau20_v2", @@ -75,6 +81,7 @@ namespace MuTau { {analysis::DataSourceType::Run2015D,{"HLT_IsoMu18_v"}}}; const std::set hltPathMC = {"HLT_IsoMu17_eta2p1_v1"}; + const std::set hltPathRunD = {"HLT_IsoMu18_v"}; //const std::set hltPathMC = {"HLT_IsoMu17_eta2p1_LooseIsoPFTau20_v1","HLT_IsoMu24_eta2p1_v1"}; } @@ -292,7 +299,7 @@ namespace muonVeto { namespace jetID { // AN-2013/188 H->tautau physics objects && twiki HiggsToTauTauWorkingSummer2013#Jets - const double pt = 30; // > + const double pt = 30; // > , njets is filled with a 30 GeV cuts. All the other variables use jets with 20 pt cut const double eta = 4.7; // < const bool puLooseID = true; // = const double deltaR_signalObjects = 0.5; // > @@ -302,18 +309,18 @@ namespace jetID { const double pt_loose = 20; // > - // https://github.com/ajgilbert/ICHiggsTauTau/blob/production-27Feb2014/plugins/MVAMETPairProducer.cc#L410 - inline bool passPFLooseId(const ntuple::Jet& jet) + // https://twiki.cern.ch/twiki/bin/view/CMS/JetID#Recommendations_for_13_TeV_data + inline bool passPFLooseId(const pat::Jet& jet) { TLorentzVector momentum; - momentum.SetPtEtaPhiM(jet.pt, jet.eta, jet.phi, jet.mass); + momentum.SetPtEtaPhiM(jet.pt(), jet.eta(), jet.phi(), jet.mass()); if(momentum.E() == 0) return false; - if(jet.neutralHadronEnergyFraction > 0.99) return false; - if(jet.neutralEmEnergyFraction > 0.99) return false; - if(jet.nConstituents < 2) return false; - if(jet.chargedHadronEnergyFraction <= 0 && std::abs(jet.eta) < 2.4 ) return false; - if(jet.chargedEmEnergyFraction > 0.99 && std::abs(jet.eta) < 2.4 ) return false; - if(jet.chargedMultiplicity < 1 && std::abs(jet.eta) < 2.4 ) return false; + if(jet.neutralHadronEnergyFraction() > 0.99) return false; + if(jet.neutralEmEnergyFraction() > 0.99) return false; + if(jet.nConstituents() < 1) return false; + if(jet.chargedHadronEnergyFraction() <= 0 && std::abs(jet.eta()) < 2.4 ) return false; + if(jet.chargedEmEnergyFraction() > 0.99 && std::abs(jet.eta()) < 2.4 ) return false; + if(jet.chargedMultiplicity() <= 0 && std::abs(jet.eta()) < 2.4 ) return false; return true; } } diff --git a/microAODProduction/interface/SyncTree.h b/microAODProduction/interface/SyncTree.h index a1d7bbbf..83f2a3e1 100755 --- a/microAODProduction/interface/SyncTree.h +++ b/microAODProduction/interface/SyncTree.h @@ -7,10 +7,10 @@ #define SYNC_DATA() \ SIMPLE_VAR(Int_t, run) /* Run */ \ SIMPLE_VAR(Int_t, lumi) /* Lumi */ \ - SIMPLE_VAR(Int_t, evt) /* Evt */ \ + SIMPLE_VAR(ULong64_t, evt) /* Evt */ \ /* Event Variables */ \ SIMPLE_VAR(Int_t, npv) /* NPV */ \ - SIMPLE_VAR(Int_t, npu) /* Number of in-time pu interactions added to the event */ \ + SIMPLE_VAR(Float_t, npu) /* Number of in-time pu interactions added to the event */ \ SIMPLE_VAR(Float_t, rho) /* Use fixedGridRhoFastjetAll */ \ /* SV Fit variables */ \ SIMPLE_VAR(Float_t, m_sv) /* SV Fit using integration method */ \ @@ -77,7 +77,7 @@ SIMPLE_VAR(Float_t, neutralIsoPtSum_2) \ SIMPLE_VAR(Float_t, puCorrPtSum_2) \ /* Di-lepton */ \ - SIMPLE_VAR(Float_t, mvis) /* pairs invariant mass */ \ + SIMPLE_VAR(Float_t, m_vis) /* pairs invariant mass */ \ SIMPLE_VAR(Float_t, pt_tt) /* pT */ \ /* Met related variables */ \ SIMPLE_VAR(Float_t, met) /* pfmet */ \ diff --git a/microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt b/microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt new file mode 100644 index 00000000..f36979eb --- /dev/null +++ b/microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt @@ -0,0 +1 @@ +{"254231": [[1, 24]], "254232": [[1, 81]], "254790": [[90, 90], [93, 630], [633, 697], [701, 715], [719, 784]], "254852": [[47, 94]], "254879": [[52, 52], [54, 140]], "254906": [[1, 75]], "254907": [[1, 52]], "254914": [[32, 32], [34, 78]], "256630": [[5, 26]], "256673": [[55, 56]], "256674": [[1, 2]], "256675": [[1, 106], [111, 164]], "256676": [[1, 160], [162, 208]], "256677": [[1, 291], [293, 390], [392, 397], [400, 455], [457, 482]], "256801": [[73, 263]], "256842": [[131, 132]], "256843": [[1, 204], [207, 284], [286, 378], [380, 461], [463, 587], [598, 627], [630, 661], [1001, 1034], [1036, 1081], [1083, 1191], [1193, 1193], [1195, 1329], [1331, 1332]], "256866": [[34, 47]], "256867": [[1, 16], [19, 94]], "256868": [[5, 33], [35, 200], [202, 492]], "256869": [[1, 34]], "256926": [[35, 50], [53, 62], [64, 65]], "256941": [[1, 17], [19, 29], [103, 105], [107, 126], [129, 129], [131, 168], [170, 170], [175, 290], [293, 294]], "257461": [[44, 95]], "257531": [[5, 45], [50, 143]], "257599": [[42, 118]], "257613": [[14, 1307]], "257614": [[1, 16]], "257645": [[37, 73], [75, 1096]], "257682": [[66, 366]], "257722": [[1, 19]], "257723": [[1, 1], [3, 108], [114, 148]], "257735": [[1, 15]], "257751": [[1, 463]], "257804": [[1, 17]], "257805": [[1, 249]], "257816": [[1, 385]], "257819": [[1, 248]], "257968": [[69, 326]], "257969": [[1, 634]], "258129": [[30, 124]], "258136": [[1, 60]], "258157": [[1, 56]], "258158": [[1, 1088], [1091, 1786]], "258159": [[1, 501]], "258177": [[1, 342], [347, 724], [755, 1939]], "258211": [[43, 129]], "258213": [[1, 165]], "258214": [[1, 217]], "258215": [[1, 6]], "258287": [[45, 144], [148, 227]], "258403": [[1, 251]], "258425": [[3, 136]], "258426": [[1, 10]], "258427": [[1, 107]], "258428": [[1, 159]], "258432": [[1, 4]], "258434": [[1, 453]], "258440": [[1, 442], [444, 732]], "258444": [[1, 37]], "258445": [[1, 302]], "258446": [[1, 142]], "258448": [[2, 100], [102, 731]], "258655": [[60, 68]], "258656": [[1, 334]], "258694": [[23, 199]], "258702": [[52, 402]], "258703": [[1, 389]], "258705": [[1, 100]], "258706": [[1, 733]], "258712": [[1, 524]], "258713": [[1, 161]], "258714": [[1, 67]], "258741": [[22, 72]], "258742": [[2, 693]], "258745": [[1, 260]], "258749": [[1, 204], [220, 604]], "258750": [[1, 197]], "259626": [[83, 106], [108, 111], [115, 166], [169, 215], [218, 437]], "259637": [[1, 72], [75, 221]], "259681": [[64, 98]], "259683": [[5, 19], [22, 23], [25, 94]], "259685": [[1, 209], [213, 240], [242, 290], [292, 445], [447, 538], [540, 544], [546, 630]], "259686": [[1, 43], [45, 47], [49, 100], [102, 108], [110, 163], [165, 245], [248, 341]], "259721": [[73, 99], [102, 408]], "259809": [[53, 222]], "259810": [[1, 113], [116, 116]], "259811": [[1, 47], [50, 91]], "259813": [[1, 10]], "259817": [[1, 5]], "259818": [[1, 160]], "259820": [[1, 32], [36, 161]], "259821": [[1, 75], [78, 212]], "259822": [[1, 14], [17, 464]], "259861": [[1, 34], [36, 38], [40, 66], [69, 77]], "259862": [[1, 13], [16, 532]], "259884": [[73, 143], [147, 155]], "259890": [[1, 34], [37, 109]], "259891": [[1, 108]], "260373": [[47, 370], [373, 408]], "260424": [[3, 12], [15, 266], [269, 672]], "260425": [[1, 18], [21, 55], [58, 256]], "260426": [[1, 52], [55, 296], [298, 307], [310, 504]], "260427": [[1, 198]], "260431": [[1, 447]], "260532": [[3, 8], [10, 456], [458, 746]], "260533": [[1, 14]], "260534": [[1, 375]], "260536": [[9, 37], [45, 60], [62, 193]], "260538": [[1, 284]], "260541": [[1, 24]], "260575": [[1, 24]], "260576": [[2, 88], [90, 150]], "260577": [[1, 76]], "260593": [[65, 401]], "260627": [[97, 611], [613, 757], [760, 788], [791, 1051], [1054, 1530], [1533, 1845]]} \ No newline at end of file diff --git a/microAODProduction/plugins/BuildFile.xml b/microAODProduction/plugins/BuildFile.xml index 7a091cef..44ff442a 100755 --- a/microAODProduction/plugins/BuildFile.xml +++ b/microAODProduction/plugins/BuildFile.xml @@ -23,6 +23,7 @@ + diff --git a/microAODProduction/plugins/SyncTreeProducer.cc b/microAODProduction/plugins/SyncTreeProducer.cc index 39309e13..f2c307c0 100755 --- a/microAODProduction/plugins/SyncTreeProducer.cc +++ b/microAODProduction/plugins/SyncTreeProducer.cc @@ -57,11 +57,18 @@ #include "DataFormats/EgammaCandidates/interface/ConversionFwd.h" #include "DataFormats/EgammaCandidates/interface/Conversion.h" + +#include "SimDataFormats/PileupSummaryInfo/interface/PileupSummaryInfo.h" + #include "RecoEgamma/EgammaTools/interface/ConversionTools.h" #include "FWCore/ServiceRegistry/interface/Service.h" #include "CommonTools/UtilAlgos/interface/TFileService.h" +//SVFit +#include "FWCore/ParameterSet/interface/FileInPath.h" +#include "TauAnalysis/SVfitStandalone/interface/SVfitStandaloneAlgorithm.h" + //HHbbTauTau Framework #include "../../TreeProduction/interface/Tau.h" #include "../../TreeProduction/interface/Muon.h" @@ -149,6 +156,8 @@ class SyncTreeProducer : public edm::EDAnalyzer { const std::set& hltPaths, bool useStandardTriggerMatch, const bool isCrossTrigger); + + double Fit(const CandidateV2Ptr& higgs, const analysis::MissingETPtr& met); analysis::CandidateV2Ptr SelectSemiLeptonicHiggs(CandidateV2PtrVector& higgses); int matchToTruth(const edm::Ptr el, @@ -182,16 +191,20 @@ class SyncTreeProducer : public edm::EDAnalyzer { !SyncTreeProducer::HaveTriggerMatched(triggerObjects, names, interestingPath, *daughter, deltaR_Limit,isCrossTrigger)) return false; if(!isCrossTrigger && + daughter->GetType() == CandidateV2::Type::Muon && SyncTreeProducer::HaveTriggerMatched(triggerObjects, names, interestingPath, *daughter, deltaR_Limit,isCrossTrigger)) return true; } - return true; + if ( isCrossTrigger) return true; + if (!isCrossTrigger) return false; } for (auto &triggerObject : triggerObjects){ triggerObject.unpackPathNames(names); TLorentzVector triggerObjectMomentum; triggerObjectMomentum.SetPtEtaPhiM(triggerObject.pt(), triggerObject.eta(), triggerObject.phi(), triggerObject.mass()); + //Pt cut for singleTrigger + if (!isCrossTrigger && triggerObject.pt() < 18) continue; for (unsigned n = 0; n < triggerObject.pathNames(true).size(); ++n){ const std::string& objectMatchedPath = triggerObject.pathNames(true).at(n); @@ -240,6 +253,7 @@ class SyncTreeProducer : public edm::EDAnalyzer { edm::EDGetToken muonsMiniAODToken_; edm::EDGetToken vtxMiniAODToken_; edm::EDGetToken pfMETAODToken_; + edm::EDGetToken jetsMiniAODToken_; edm::EDGetTokenT triggerBits_; edm::EDGetTokenT triggerPrescales_; edm::EDGetTokenT triggerObjects_; @@ -248,6 +262,7 @@ class SyncTreeProducer : public edm::EDAnalyzer { analysis::SyncAnalyzerData anaData; SelectionResultsV2_mutau selection; VertexV2Ptr primaryVertex; + std::string sampleType; }; // @@ -266,11 +281,13 @@ SyncTreeProducer::SyncTreeProducer(const edm::ParameterSet& iConfig): muonsMiniAODToken_(mayConsume >(iConfig.getParameter("muonSrc"))), vtxMiniAODToken_(mayConsume >(iConfig.getParameter("vtxSrc"))), pfMETAODToken_(mayConsume >(iConfig.getParameter("pfMETSrc"))), + jetsMiniAODToken_(mayConsume >(iConfig.getParameter("jetSrc"))), triggerBits_(consumes(iConfig.getParameter("bits"))), triggerPrescales_(consumes(iConfig.getParameter("prescales"))), triggerObjects_(consumes(iConfig.getParameter("objects"))), syncTree(&edm::Service()->file(),false), - anaData("BeforCut.root") + anaData("BeforCut.root"), + sampleType(iConfig.getParameter("sampleType")) { // genParticlesMiniAODToken_ = mayConsume > // (iConfig.getParameter @@ -302,8 +319,6 @@ SyncTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetu cuts::Cutter cut(&GetAnaData().Selection("events")); // Save global info right away - - //Get collection edm::Handle > taus; iEvent.getByToken(tausMiniAODToken_, taus); @@ -313,6 +328,11 @@ SyncTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetu iEvent.getByToken(vtxMiniAODToken_, vertices); edm::Handle > pfMETs; iEvent.getByToken(pfMETAODToken_, pfMETs); + edm::Handle > jets; + iEvent.getByToken(jetsMiniAODToken_, jets); + edm::Handle >> metCovMatrix; + edm::InputTag metCovMatrixTAG("METSignificance","METCovariance"); + iEvent.getByLabel(metCovMatrixTAG,metCovMatrix); edm::Handle triggerBits; iEvent.getByToken(triggerBits_, triggerBits); edm::Handle triggerPrescales; @@ -320,6 +340,9 @@ SyncTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetu edm::Handle triggerObjects; iEvent.getByToken(triggerObjects_, triggerObjects); + edm::Handle > PUInfo; + iEvent.getByLabel(edm::InputTag("slimmedAddPileupInfo"), PUInfo); + /* std::cout << "\n === TRIGGER OBJECTS === " << std::endl; for (pat::TriggerObjectStandAlone obj : *triggerObjects) { // note: not "const &" since we want to call unpackPathNames obj.unpackPathNames(names); @@ -366,11 +389,21 @@ SyncTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetu cut(true,"events"); + + if(PUInfo.isValid()){ + for(std::vector::const_iterator PVI = PUInfo->begin(); PVI != PUInfo->end(); ++PVI){ + int BX = PVI->getBunchCrossing(); + std::cout << "\t PileUpInfo : BX = " << PVI->getBunchCrossing() + << " PU = " << PVI->getTrueNumInteractions() << std::endl; + if(BX == 0) selection.numtruepileupinteractions = PVI->getTrueNumInteractions(); + } + } + bool triggerFired = false; const edm::TriggerNames &names = iEvent.triggerNames(*triggerBits); - // const auto Key = analysis::DataSourceType::Spring15MC; - // const auto& hltPaths = MuTau::trigger::hltPathMaps[Key]; - const auto& hltPaths = MuTau::trigger::hltPathMC; + const auto Key = analysis::stringToDataSourceTypeMap.at(sampleType); + const auto& hltPaths = MuTau::trigger::hltPathMaps.at(Key); + // const auto& hltPaths = MuTau::trigger::hltPathMC; //std::cout << "\n === TRIGGER PATHS === " << std::endl; for (unsigned int i = 0, n = triggerBits->size(); i < n; ++i) { for (const std::string& triggerPath : hltPaths ){ @@ -391,7 +424,7 @@ SyncTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetu } cut(triggerFired,"trigger"); - + const auto PV = (*vertices).ptrAt(0); //Deferenzio per passare da edm::Handle a edm::View. Quest'ultimo permette //di gestire una qualsiasi collezione del tipo passatogli tramite Tamplate. //Es. edm::View gestisce int semplici, vector, set etc. @@ -412,6 +445,7 @@ SyncTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetu std::vector patMuonsVector; CandidateV2PtrVector muonCollection, tauCollection; + CandidateV2PtrVector muonVetoCollection; for(const pat::Muon &muon : *muons){ ntuple::Muon tmp_muon; @@ -433,8 +467,27 @@ SyncTreeProducer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetu } + for(const pat::Muon &muon : *muons){ + double iso_mu = (muon.pfIsolationR03().sumChargedHadronPt + std::max( + muon.pfIsolationR03().sumNeutralHadronEt + + muon.pfIsolationR03().sumPhotonEt - + 0.5 * muon.pfIsolationR03().sumPUPt, 0.0)) / muon.pt(); + bool muonIP = fabs(muon.muonBestTrack()->dxy(PV->position())) < muonID::dB && + fabs(muon.muonBestTrack()->dz(PV->position())) < muonID::dz; + if(!(muon.pt() > ZmumuVeto::pt && fabs(muon.eta()) < ZmumuVeto::eta && + muon.isGlobalMuon() && muon.isTrackerMuon() && muon.isPFMuon() && + muonIP && iso_mu < 0.3)) continue; + + const CandidateV2Ptr muon_candidate(new CandidateV2(muon)); + muonVetoCollection.push_back(muon_candidate); + } + cut(muonCollection.size(),"muons"); + auto Zmumu = FindCompatibleObjects(muonVetoCollection,muonVetoCollection,DeltaR_betweenSignalObjects, + CandidateV2::Type::Z,"Z_mu_mu",0); + selection.Zveto = Zmumu.size() ? true : false; + std::cout<< "=========================================================================== \n" << "\t Run "<GetDaughter(analysis::CandidateV2::Type::Tau)->GetNtupleObject(); // std::cout<< "\n\t Tau Iso--> " << tauBuono.tauID("byCombinedIsolationDeltaBetaCorrRaw3Hits") <jetID::pt_loose && fabs(jet.eta())GetMomentum().DeltaR(selection.GetLeg(1)->GetMomentum()) > jetID::deltaR_signalObjects && + jet_candidate->GetMomentum().DeltaR(selection.GetLeg(2)->GetMomentum()) > jetID::deltaR_signalObjects) ) continue; + jetsCollection.push_back(jet_candidate); + + if ( jet.pt()>jetID::pt_loose && jet.bDiscriminator("pfCombinedInclusiveSecondaryVertexV2BJetTags") > 0.89) + bjetsCollection.push_back(jet_candidate); + + } + +// const auto ptOrdering = [&] ( const CandidateV2Ptr& first, const CandidateV2Ptr& second ) -> bool +// { return first->GetMomentum().Pt() > second->GetMomentum().Pt(); }; + +// std::cout << " Before Pt Jets Ordering \n : " << std::endl; +// for (auto & jet : jetsCollection) { +// std::cout <<"\t Jet Momentum : "<GetMomentum()<GetMomentum()<GetMomentum()<GetMomentum()< " << svfit_mass <GetDaughter(analysis::CandidateV2::Type::Muon)->GetNtupleObject(); + const pat::Tau& tau = higgs->GetDaughter(analysis::CandidateV2::Type::Tau)->GetNtupleObject(); + // define MET + double measuredMETx = met->Px(); + double measuredMETy = met->Py(); + // define MET covariance + TMatrixD covMET(2, 2); + covMET[0][0] = met->GetCovVector().at(0); + covMET[1][0] = met->GetCovVector().at(1); + covMET[0][1] = met->GetCovVector().at(2); + covMET[1][1] = met->GetCovVector().at(3); + // define lepton four vectors + std::vector measuredTauLeptons; + measuredTauLeptons.push_back(svFitStandalone::MeasuredTauLepton(svFitStandalone::kTauToMuDecay, muon.pt(), + muon.eta(), muon.phi(), muon.mass())); // tau -> electron decay (Pt, eta, phi, mass) + measuredTauLeptons.push_back(svFitStandalone::MeasuredTauLepton(svFitStandalone::kTauToHadDecay, tau.pt(), + tau.eta(), tau.phi(), tau.mass(),tau.decayMode())); // tau -> 1prong0pi0 hadronic decay (Pt, eta, phi, mass, pat::Tau.decayMode()) + SVfitStandaloneAlgorithm algo(measuredTauLeptons, measuredMETx, measuredMETy, covMET, 0); + algo.addLogM(false); + edm::FileInPath inputFileName_visPtResolution("TauAnalysis/SVfitStandalone/data/svFitVisMassAndPtResolutionPDF.root"); + TH1::AddDirectory(false); + TFile* inputFile_visPtResolution = new TFile(inputFileName_visPtResolution.fullPath().data()); + algo.shiftVisPt(true, inputFile_visPtResolution); + algo.integrateMarkovChain(); + + double mass = algo.getMass(); // return value is in units of GeV + if ( algo.isValidSolution() ) { + selection.svfitResult.mass = algo.mass(); + selection.svfitResult.has_valid_mass = true; + //if(fitAlgorithm == FitAlgorithm::MarkovChain) { + selection.svfitResult.momentum.SetPtEtaPhiM(algo.pt(), algo.eta(), algo.phi(), algo.mass()); + selection.svfitResult.has_valid_momentum = true; + // } + std::cout << "... m svfit : " << algo.mass() << " +/- " << algo.massUncert() << std::endl; + } else { + std::cout << "sorry -- status of NLL is not valid [" << algo.isValidSolution() << "]" << std::endl; + } + + delete inputFile_visPtResolution; + + return mass; +} + void SyncTreeProducer::FillSyncTree(const edm::Event& iEvent) { -// static const float default_value = Run2::DefaultFloatFillValueForFlatTree(); + // static const float default_value = Run2::DefaultFloatFillValueForFlatTree(); // Event std::cout<<"~~~~~~~~~~~~~EVENT Info~~~~~~~~~"<eventEnergyScale() = static_cast(eventEnergyScale); syncTree.npv() = selection.vertices.size(); + syncTree.npu() = selection.numtruepileupinteractions; // if (config.ApplyPUreweight()){ // const size_t bxIndex = tools::find_index(event->eventInfo().bunchCrossing, 0); // if(bxIndex >= event->eventInfo().bunchCrossing.size()) @@ -799,18 +945,18 @@ void SyncTreeProducer::FillSyncTree(const edm::Event& iEvent) // syncTree->decayModeWeight_2() = GetEventWeights().GetDecayModeWeight(2); // HTT candidate - syncTree.mvis() = selection.higgs->GetMomentum().M(); + syncTree.m_vis() = selection.higgs->GetMomentum().M(); syncTree.pt_tt() = (selection.GetLeg(1)->GetMomentum() + selection.GetLeg(2)->GetMomentum()).Pt(); // syncTree->m_sv_vegas() = selection.svfitResults.fit_vegas.has_valid_mass // ? selection.svfitResults.fit_vegas.mass : default_value; -// syncTree->m_sv_MC() = selection.svfitResults.fit_mc.has_valid_mass -// ? selection.svfitResults.fit_mc.mass : default_value; -// syncTree->pt_sv_MC() = selection.svfitResults.fit_mc.has_valid_momentum -// ? selection.svfitResults.fit_mc.momentum.Pt() : default_value; -// syncTree->eta_sv_MC() = selection.svfitResults.fit_mc.has_valid_momentum -// ? selection.svfitResults.fit_mc.momentum.Eta() : default_value; -// syncTree->phi_sv_MC() = selection.svfitResults.fit_mc.has_valid_momentum -// ? selection.svfitResults.fit_mc.momentum.Phi() : default_value; + syncTree.m_sv() = selection.svfitResult.has_valid_mass + ? selection.svfitResult.mass : Run2::DefaultFillValueForSyncTree(); + syncTree.pt_sv() = selection.svfitResult.has_valid_momentum + ? selection.svfitResult.momentum.Pt() : Run2::DefaultFillValueForSyncTree(); + syncTree.eta_sv() = selection.svfitResult.has_valid_momentum + ? selection.svfitResult.momentum.Eta() : Run2::DefaultFillValueForSyncTree(); + syncTree.phi_sv() = selection.svfitResult.has_valid_momentum + ? selection.svfitResult.momentum.Phi() : Run2::DefaultFillValueForSyncTree(); // Kinematic fit // syncTree->kinfit_bb_tt_mass() = selection.kinfitResults.mass; @@ -829,6 +975,10 @@ void SyncTreeProducer::FillSyncTree(const edm::Event& iEvent) syncTree.met() = selection.pfMET->Pt(); syncTree.metphi() = selection.pfMET->Phi(); syncTree.isPFMET() = selection.pfMET->isPFMET(); + syncTree.metcov00() = selection.pfMET->GetCovVector().at(0); + syncTree.metcov01() = selection.pfMET->GetCovVector().at(1); + syncTree.metcov10() = selection.pfMET->GetCovVector().at(2); + syncTree.metcov11() = selection.pfMET->GetCovVector().at(3); // syncTree->mvamet() = MET_momentum.Pt(); // syncTree->mvametphi() = MET_momentum.Phi(); // //syncTree->pzetavis(); @@ -897,23 +1047,80 @@ void SyncTreeProducer::FillSyncTree(const edm::Event& iEvent) syncTree.decayModeFindingOldDMs_2() = patTau.tauID("decayModeFinding"); + syncTree.dilepton_veto() = selection.Zveto; + // Jets -// syncTree->njets() = selection.jets.size(); + syncTree.njets() = selection.jets.size(); // syncTree->njetspt20() = selection.jetsPt20.size(); -// syncTree->nBjets() = selection.bjets_all.size(); -// syncTree->nBjets_retagged() = selection.retagged_bjets.size(); - + syncTree.nbtag() = selection.bjets.size(); + //int jetCount = 0; + + if (selection.jets.size()){ + const pat::Jet& pat_jet1 = selection.jets.at(0)->GetNtupleObject(); + syncTree.jpt_1() = selection.jets.at(0)->GetMomentum().Pt(); + syncTree.jeta_1() = selection.jets.at(0)->GetMomentum().Eta(); + syncTree.jphi_1() = selection.jets.at(0)->GetMomentum().Phi(); + syncTree.jrawf_1() = (pat_jet1.correctedJet("Uncorrected").pt() ) / selection.jets.at(0)->GetMomentum().Pt(); + syncTree.jmva_1() = pat_jet1.userFloat("pileupJetId:fullDiscriminant"); + } -// for (const CandidatePtr& jet : selection.jets){ -// const ntuple::Jet& ntuple_jet = jet->GetNtupleObject(); -// syncTree->pt_jets().push_back(jet->GetMomentum().Pt()); -// syncTree->eta_jets().push_back(jet->GetMomentum().Eta()); -// syncTree->phi_jets().push_back(jet->GetMomentum().Phi()); -// syncTree->ptraw_jets().push_back(ntuple_jet.pt_raw); -// syncTree->ptunc_jets().push_back(ntuple_jet.pt_raw);//to put uncertainties -> put pt_raw only to compile -// syncTree->mva_jets().push_back(ntuple_jet.puIdMVA); -// syncTree->passPU_jets().push_back(ntuple::JetID_MVA::PassLooseId(ntuple_jet.puIdBits)); -// } + if (selection.bjets.size()){ + const pat::Jet& pat_jet1 = selection.bjets.at(0)->GetNtupleObject(); + syncTree.bpt_1() = selection.bjets.at(0)->GetMomentum().Pt(); + syncTree.beta_1() = selection.bjets.at(0)->GetMomentum().Eta(); + syncTree.bphi_1() = selection.bjets.at(0)->GetMomentum().Phi(); + syncTree.brawf_1() = (pat_jet1.correctedJet("Uncorrected").pt() ) / selection.bjets.at(0)->GetMomentum().Pt(); + syncTree.bmva_1() = pat_jet1.userFloat("pileupJetId:fullDiscriminant"); + syncTree.bcsv_1() = pat_jet1.bDiscriminator("pfCombinedInclusiveSecondaryVertexV2BJetTags"); + } +// syncTree->nBjets_retagged() = selection.retagged_bjets.size(); +// for( const CandidateV2Ptr& jet : selection.jets ){ +// jetCount++; +// if ( jetCount > 2 ) continue; +// if (jetCount == 1){ +// const pat::Jet& pat_jet1 = jet->GetNtupleObject(); +// syncTree.jpt_1() = jet->GetMomentum().Pt(); +// syncTree.jeta_1() = jet->GetMomentum().Eta(); +// syncTree.jphi_1() = jet->GetMomentum().Phi(); +// syncTree.jrawf_1() = (pat_jet1.correctedJet("Uncorrected").pt() ) / jet->GetMomentum().Pt(); +// syncTree.jmva_1() = pat_jet1.userFloat("pileupJetId:fullDiscriminant"); +// } + +// if (jetCount == 2){ +// const pat::Jet& pat_jet2 = jet->GetNtupleObject(); +// syncTree.jpt_2() = jet->GetMomentum().Pt(); +// syncTree.jeta_2() = jet->GetMomentum().Eta(); +// syncTree.jphi_2() = jet->GetMomentum().Phi(); +// syncTree.jrawf_2() = (pat_jet2.correctedJet("Uncorrected").pt() ) / jet->GetMomentum().Pt(); +// syncTree.jmva_2() = pat_jet2.userFloat("pileupJetId:fullDiscriminant"); +// } +// } + +// int bjetCount = 0; +//// syncTree->nBjets_retagged() = selection.retagged_bjets.size(); +// for( const CandidateV2Ptr& jet : selection.bjets ){ +// bjetCount++; +// if ( bjetCount > 2 ) continue; +// if (bjetCount == 1){ +// const pat::Jet& pat_jet1 = jet->GetNtupleObject(); +// syncTree.bpt_1() = jet->GetMomentum().Pt(); +// syncTree.beta_1() = jet->GetMomentum().Eta(); +// syncTree.bphi_1() = jet->GetMomentum().Phi(); +// syncTree.brawf_1() = (pat_jet1.correctedJet("Uncorrected").pt() ) / jet->GetMomentum().Pt(); +// syncTree.bmva_1() = pat_jet1.userFloat("pileupJetId:fullDiscriminant"); +// syncTree.bcsv_1() = pat_jet1.bDiscriminator("pfCombinedInclusiveSecondaryVertexV2BJetTags"); +// } + +// if (bjetCount == 2){ +// const pat::Jet& pat_jet2 = jet->GetNtupleObject(); +// syncTree.bpt_2() = jet->GetMomentum().Pt(); +// syncTree.beta_2() = jet->GetMomentum().Eta(); +// syncTree.bphi_2() = jet->GetMomentum().Phi(); +// syncTree.brawf_2() = (pat_jet2.correctedJet("Uncorrected").pt() ) / jet->GetMomentum().Pt(); +// syncTree.bmva_2() = pat_jet2.userFloat("pileupJetId:fullDiscriminant"); +// syncTree.bcsv_2() = pat_jet2.bDiscriminator("pfCombinedInclusiveSecondaryVertexV2BJetTags"); +// } +// } // for (const CandidatePtr& jet : selection.bjets_all) { // const ntuple::Jet& ntuple_jet = jet->GetNtupleObject(); diff --git a/microAODProduction/python/electronID_cfg.py b/microAODProduction/python/electronID_cfg.py index 03779ac6..ec87734e 100755 --- a/microAODProduction/python/electronID_cfg.py +++ b/microAODProduction/python/electronID_cfg.py @@ -33,8 +33,8 @@ '/store/mc/RunIISpring15DR74/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/Asympt25ns_MCRUN2_74_V9-v3/10000/0260F225-7614-E511-A79F-00A0D1EE8EB4.root', ) -personalFileMiniAOD = cms.untracked.vstring('file:skimBranches_Signal_miniV2.root',) - +personalFileMiniAOD = cms.untracked.vstring('file:skimBranches_Signal_miniV2.root') ##skimBranches_Signal_miniV2.root +RunD_mini = cms.untracked.vstring('file:/lustre/cms//store/user/ccaputo/HHbbtautau/Run2/FirstProduction/SingleMuon/crab_RunD/160104_205440/0000/skimBranches_Data_140.root') # Set up input/output depending on the format # You can list here either AOD or miniAOD files, but not both types mixed # @@ -45,10 +45,33 @@ outputFile = "electron_ntuple.root" print("AOD input files are used") else : - inputFiles = personalFileMiniAOD + inputFiles = personalFileMiniAOD outputFile = "tauID_ntuple.root" print("MiniAOD input files are used") -process.source = cms.Source ("PoolSource", fileNames = inputFiles ) +process.source = cms.Source ("PoolSource", fileNames = inputFiles, +# eventsToProcess = cms.untracked.VEventRange('1:97841') +# eventsToProcess = cms.untracked.VEventRange( +# '1:4854','1:5650','1:12154', '1:15313', '1:18377', '1:22017', '1:22477', +# '1:30133', '1:30975', '1:32636', '1:34615', '1:48908', '1:50869', '1:50980', +# '1:53592', '1:58895', '1:59329', '1:61403', '1:62118', '1:64539', '1:65259', +# '1:68675', '1:69486', '1:74288', '1:76282', '1:77713', '1:78710', '1:82726', +# '1:85391', '1:89033', '1:94331', '1:96211', '1:96265', '1:97841', '1:98466', +# '1:101778','1:106256','1:108005','1:115654','1:118548','1:124470','1:125911', +# '1:128080','1:133973','1:145636','1:145782','1:148435','1:153388','1:154989', +# '1:155222','1:155606','1:157896','1:158203','1:159524','1:159677','1:164960', +# '1:173976','1:176806','1:178151','1:178506','1:185060','1:185621','1:206157', +# '1:218844','1:224633','1:225924','1:226354','1:228458','1:229620','1:233295', +# '1:235780','1:236624','1:240021','1:248476','1:248626','1:252329','1:261874', +# '1:269397','1:271785','1:273917','1:275016','1:276244','1:279778','1:282814', +# '1:285986','1:287025','1:296181','1:306248','1:311128','1:312811','1:313864', +# '1:319594','1:321652','1:337202','1:354113','1:354826','1:356172','1:358279', +# '1:361468','1:368865','1:372553','1:374591','1:374834','1:376422','1:377092', +# '1:377857','1:381228','1:382663','1:389025','1:389619','1:395620','1:396061', +# '1:403741','1:404549','1:407695','1:411717','1:411885','1:415110','1:421456', +# '1:439435','1:440533','1:448589','1:449538','1:452435','1:458941','1:461904', +# '1:475696','1:476634','1:481900','1:485343','1:485435','1:488045','1:488544', +# '1:489345','1:489596','1:489812','1:494968','1:495099') + ) # # Set up electron ID (VID framework) @@ -88,7 +111,8 @@ tauSrc = cms.InputTag("slimmedTaus"), muonSrc = cms.InputTag("slimmedMuons"), vtxSrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - pfMETSrc = cms.InputTag("slimmedMETs"), + pfMETSrc = cms.InputTag("slimmedMETsNoHF"), + jetSrc = cms.InputTag("slimmedJets"), bits = cms.InputTag("TriggerResults","","HLT"), prescales = cms.InputTag("patTrigger"), objects = cms.InputTag("selectedPatTrigger"), @@ -125,7 +149,6 @@ ) - process.TFileService = cms.Service("TFileService", fileName = cms.string( outputFile ) ) diff --git a/microAODProduction/python/miniAOD_skim_EleID.py b/microAODProduction/python/miniAOD_skim_EleID.py index b5bec123..d0b458a8 100755 --- a/microAODProduction/python/miniAOD_skim_EleID.py +++ b/microAODProduction/python/miniAOD_skim_EleID.py @@ -29,9 +29,12 @@ process.load("Configuration.StandardSequences.MagneticField_cff") process.load("Configuration.Geometry.GeometryRecoDB_cff") -process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") -from Configuration.AlCa.GlobalTag import GlobalTag -process.GlobalTag = GlobalTag(process.GlobalTag, 'MCRUN2_74_V9::All') +#process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") +#from Configuration.AlCa.GlobalTag import GlobalTag +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff') +from Configuration.AlCa.GlobalTag_condDBv2 import GlobalTag + +process.GlobalTag = GlobalTag(process.GlobalTag, '74X_mcRun2_asymptotic_v4') ## Events to process process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(10000) ) @@ -46,8 +49,8 @@ inputDY = cms.untracked.vstring( '/store/mc/RunIISpring15DR74/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/Asympt25ns_MCRUN2_74_V9-v3/10000/009D49A5-7314-E511-84EF-0025905A605E.root') inputSignal_v2 = cms.untracked.vstring("file:768F5AFB-D771-E511-9ABD-B499BAABD280.root") -#inputSignal_v2 = cms.untracked.vstring( -# '/store/mc/RunIISpring15MiniAODv2/SUSYGluGluToHToTauTau_M-160_TuneCUETP8M1_13TeV-pythia8/MINIAODSIM/74X_mcRun2_asymptotic_v2-v1/40000/10563B6E-D871-E511-9513-B499BAABD280.root') +##inputSignal_v2 = cms.untracked.vstring( +## '/store/mc/RunIISpring15MiniAODv2/SUSYGluGluToHToTauTau_M-160_TuneCUETP8M1_13TeV-pythia8/MINIAODSIM/74X_mcRun2_asymptotic_v2-v1/40000/10563B6E-D871-E511-9513-B499BAABD280.root') ## Input files process.source = cms.Source("PoolSource", fileNames = inputSignal_v2 @@ -64,6 +67,7 @@ 'keep edmTriggerResults_*__HLT', 'keep edmTriggerResults_*__PAT', 'keep PileupSummaryInfos_addPileupInfo__HLT', + 'keep PileupSummaryInfos_slimmedAddPileupInfo__PAT', 'keep double_*__RECO', 'keep recoBeamSpot_offlineBeamSpot__RECO', 'keep *_electronMVAValueMapProducer_*_USER', ## Value Map with the electrons ID MVA values @@ -71,7 +75,7 @@ 'keep patPackedTriggerPrescales_patTrigger__PAT', 'keep patElectrons_slimmedElectrons__PAT', 'keep patJets_*__PAT', - 'keep patMETs_*__PAT', + 'keep patMETs_*__PAT', ## MET 'keep patMuons_slimmedMuons__PAT', 'keep patPackedCandidates_packedPFCandidates__PAT', 'keep patPackedGenParticles_packedGenParticles__PAT', @@ -81,11 +85,13 @@ 'keep recoGenParticles_prunedGenParticles__PAT', 'keep recoVertexs_offlineSlimmedPrimaryVertices__PAT', 'keep recoVertexCompositePtrCandidates_slimmedSecondaryVertices__PAT', - 'keep *_l1extraParticles_*_*']) + 'keep *_l1extraParticles_*_*', + 'keep *_METSignificance_*_USER']) allBranches = cms.untracked.vstring(['keep *']) - +process.load("RecoMET.METProducers.METSignificance_cfi") +process.load("RecoMET.METProducers.METSignificanceParams_cfi") process.bbttSkim = cms.EDFilter("SkimFilterMiniAOD", vertexSrc = cms.untracked.InputTag('offlineSlimmedPrimaryVertices'), @@ -107,7 +113,9 @@ switchOnVIDElectronIdProducer(process, dataFormat) ##also compute a maps with the electrons that pass an MVA cut # define which IDs we want to produce -my_id_modules = ['RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_nonTrig_V1_cff'] +my_id_modules = ['RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_Trig_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_nonTrig_V1_cff'] #add them to the VID producer for idmod in my_id_modules: @@ -117,6 +125,7 @@ process.p = cms.Path( #process.electronMVAValueMapProducer* process.bbttSkim* + process.METSignificance* process.egmGsfElectronIDSequence ) diff --git a/microAODProduction/python/miniAOD_skim_EleID_DATA.py b/microAODProduction/python/miniAOD_skim_EleID_DATA.py new file mode 100755 index 00000000..c573c2d5 --- /dev/null +++ b/microAODProduction/python/miniAOD_skim_EleID_DATA.py @@ -0,0 +1,167 @@ +## @package patTuple +# Configuration file to produce PAT-tuples and ROOT-tuples for X->HH->bbTauTau analysis. +# +# \author Claudio Caputo +# +# Copyright 2015 +# +# This file is part of X->HH->bbTauTau. +# +# X->HH->bbTauTau is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# X->HH->bbTauTau is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with X->HH->bbTauTau. If not, see . + + +import FWCore.ParameterSet.Config as cms + +from FWCore.ParameterSet.VarParsing import VarParsing + +process = cms.Process("USER") + +process.load("Configuration.StandardSequences.MagneticField_cff") +process.load("Configuration.Geometry.GeometryRecoDB_cff") +#process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") +#from Configuration.AlCa.GlobalTag import GlobalTag +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff') +from Configuration.AlCa.GlobalTag_condDBv2 import GlobalTag + +process.GlobalTag = GlobalTag(process.GlobalTag, '74X_dataRun2_reMiniAOD_v1') + +## Events to process +process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(10000) ) + + +inputSignal = cms.untracked.vstring( + '/store/data/Run2015D/SingleMuon/MINIAOD/PromptReco-v4/000/258/159/00000/6CA1C627-246C-E511-8A6A-02163E014147.root') + +process.source = cms.Source("PoolSource", + fileNames = inputSignal +) + +## Output file +from PhysicsTools.PatAlgos.patEventContent_cff import patEventContent + +## 'keep recoGsfElectronCores_*_*_PAT', +## 'keep recoSuperClusters_*_*_PAT', +## 'keep patJets_slimmedJetsPuppi__RECO', + +skimmedBranches = cms.untracked.vstring(['drop *', + 'keep edmTriggerResults_*__HLT', + 'keep double_*__RECO', + 'keep *_electronMVAValueMapProducer_*_USER', ## Value Map with the electrons ID MVA values + 'keep floatedmValueMap_offlineSlimmedPrimaryVertices__RECO', + 'keep patPackedTriggerPrescales_patTrigger__RECO', + 'keep patElectrons_slimmedElectrons__RECO', + 'keep patJets_*__RECO', + 'keep patMETs_*__RECO', ## MET + 'keep patMuons_slimmedMuons__RECO', + 'keep patPackedCandidates_packedPFCandidates__RECO', + 'keep patPackedGenParticles_packedGenParticles__RECO', + 'keep patTaus_slimmedTaus__RECO', + 'keep patTriggerObjectStandAlones_selectedPatTrigger__RECO', + 'keep recoGenJets_slimmedGenJets__RECO', + 'keep recoGenParticles_prunedGenParticles__RECO', + 'keep recoVertexs_offlineSlimmedPrimaryVertices__RECO', + 'keep recoVertexCompositePtrCandidates_slimmedSecondaryVertices__RECO', + 'keep *_l1extraParticles_*_*', + 'keep *_METSignificance_*_USER']) + +allBranches = cms.untracked.vstring(['keep *']) + +import FWCore.PythonUtilities.LumiList as LumiList +process.source.lumisToProcess = LumiList.LumiList(filename = '/cmshome/caputo/HH_bbTauTau/Run2/CMSSW_7_4_12_patch4/src/HHbbTauTau/microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt').getVLuminosityBlockRange() + +process.load("RecoMET.METProducers.METSignificance_cfi") +process.load("RecoMET.METProducers.METSignificanceParams_cfi") + +process.bbttSkim = cms.EDFilter("SkimFilterMiniAOD", + vertexSrc = cms.untracked.InputTag('offlineSlimmedPrimaryVertices'), + muonSrc = cms.untracked.InputTag('slimmedMuons'), + electronSrc=cms.untracked.InputTag("slimmedElectrons"), + tauSrc = cms.untracked.InputTag("slimmedTaus") + ) +## Load module for Electron MVA ID +## It will append a value maps the miniAOD, that it's accesible throught a well Handle +## Example code here: +## https://github.com/ikrav/EgammaWork/blob/ntupler_and_VID_demos_7.4.12/ElectronNtupler/plugins/ElectronNtuplerVIDwithMVADemo.cc#L99 +## process.load("RecoEgamma.ElectronIdentification.ElectronMVAValueMapProducer_cfi") +##------------- +from PhysicsTools.SelectorUtils.tools.vid_id_tools import * +# turn on VID producer, indicate data format to be +# DataFormat.AOD or DataFormat.MiniAOD, as appropriate +dataFormat = DataFormat.MiniAOD + +switchOnVIDElectronIdProducer(process, dataFormat) ##also compute a maps with the electrons that pass an MVA cut + +# define which IDs we want to produce +my_id_modules = ['RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_Trig_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_nonTrig_V1_cff'] + +#add them to the VID producer +for idmod in my_id_modules: + setupAllVIDIdsInModule(process,idmod,setupVIDElectronSelection) +##------------ +#------------- +# Output ROOT file +#------------- +process.TFileService = cms.Service("TFileService", fileName = cms.string("syncTree.root") ) + +#------------- +# SyncTree Producer +#------------- +process.synctupler = cms.EDAnalyzer('SyncTreeProducer', + + genParticles = cms.InputTag("genParticles"), + # + # Objects specific to MiniAOD format + # + + tauSrc = cms.InputTag("slimmedTaus"), + muonSrc = cms.InputTag("slimmedMuons"), + vtxSrc = cms.InputTag("offlineSlimmedPrimaryVertices"), + jetSrc = cms.InputTag("slimmedJets"), + ##pfMETSrc = cms.InputTag("slimmedMETsNoHF"), + pfMETSrc = cms.InputTag("slimmedMETs"), + bits = cms.InputTag("TriggerResults","","HLT"), + prescales = cms.InputTag("patTrigger"), + objects = cms.InputTag("selectedPatTrigger"), + sampleType = cms.string("Run2015C"), + ) + + +process.p = cms.Path( + #process.electronMVAValueMapProducer* + process.METSignificance* + process.egmGsfElectronIDSequence* + process.bbttSkim* + process.synctupler + ) +#process.p=cms.Path() + +process.out = cms.OutputModule("PoolOutputModule", + compressionLevel = cms.untracked.int32(4), + compressionAlgorithm = cms.untracked.string('LZMA'), + eventAutoFlushCompressedSize = cms.untracked.int32(15728640), + fileName = cms.untracked.string('skimBranches_Data.root'), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring('p') ), + outputCommands = skimmedBranches, + #outputCommands = tausBranch, + #outputCommands = allBranches, + dropMetaData = cms.untracked.string('ALL'), + fastCloning = cms.untracked.bool(False), + overrideInputFileSplitLevels = cms.untracked.bool(True) +) + +process.endpath= cms.EndPath(process.out) + + diff --git a/microAODProduction/python/miniAOD_skim_Sync.py b/microAODProduction/python/miniAOD_skim_Sync.py new file mode 100755 index 00000000..f5d6a514 --- /dev/null +++ b/microAODProduction/python/miniAOD_skim_Sync.py @@ -0,0 +1,175 @@ +## @package patTuple +# Configuration file to produce PAT-tuples and ROOT-tuples for X->HH->bbTauTau analysis. +# +# \author Claudio Caputo +# +# Copyright 2015 +# +# This file is part of X->HH->bbTauTau. +# +# X->HH->bbTauTau is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 2 of the License, or +# (at your option) any later version. +# +# X->HH->bbTauTau is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with X->HH->bbTauTau. If not, see . + + +import FWCore.ParameterSet.Config as cms + +from FWCore.ParameterSet.VarParsing import VarParsing + +process = cms.Process("USER") + +process.load("Configuration.StandardSequences.MagneticField_cff") +process.load("Configuration.Geometry.GeometryRecoDB_cff") +#process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") +#from Configuration.AlCa.GlobalTag import GlobalTag +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff') +from Configuration.AlCa.GlobalTag_condDBv2 import GlobalTag + +process.GlobalTag = GlobalTag(process.GlobalTag, '74X_mcRun2_asymptotic_v4') + +## Events to process +process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(10000) ) + + +inputSignal = cms.untracked.vstring( + '/store/mc/RunIISpring15DR74/SUSYGluGluToHToTauTau_M-160_TuneCUETP8M1_13TeV-pythia8/MINIAODSIM/Asympt25ns_MCRUN2_74_V9-v1/10000/2CC6C6BD-5303-E511-9F70-0025905964CC.root') +inputTTbar = cms.untracked.vstring( + '/store/mc/RunIISpring15DR74/TTJets_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/Asympt25ns_MCRUN2_74_V9-v1/00000/022B08C4-C702-E511-9995-D4856459AC30.root') +inputWJets = cms.untracked.vstring( + '/store/mc/RunIISpring15DR74/WJetsToLNu_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/Asympt25ns_MCRUN2_74_V9-v1/00000/048FB1EE-33FD-E411-A2BA-0025905A6094.root') +inputDY = cms.untracked.vstring( + '/store/mc/RunIISpring15DR74/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-amcatnloFXFX-pythia8/MINIAODSIM/Asympt25ns_MCRUN2_74_V9-v3/10000/009D49A5-7314-E511-84EF-0025905A605E.root') +inputSignal_v2 = cms.untracked.vstring("file:768F5AFB-D771-E511-9ABD-B499BAABD280.root") +##inputSignal_v2 = cms.untracked.vstring( +## '/store/mc/RunIISpring15MiniAODv2/SUSYGluGluToHToTauTau_M-160_TuneCUETP8M1_13TeV-pythia8/MINIAODSIM/74X_mcRun2_asymptotic_v2-v1/40000/10563B6E-D871-E511-9513-B499BAABD280.root') +## Input files +process.source = cms.Source("PoolSource", + fileNames = inputSignal_v2 +) + +## Output file +from PhysicsTools.PatAlgos.patEventContent_cff import patEventContent + +## 'keep recoGsfElectronCores_*_*_PAT', +## 'keep recoSuperClusters_*_*_PAT', +## 'keep patJets_slimmedJetsPuppi__PAT', + +skimmedBranches = cms.untracked.vstring(['drop *', + 'keep edmTriggerResults_*__HLT', + 'keep edmTriggerResults_*__PAT', + 'keep PileupSummaryInfos_addPileupInfo__HLT', + 'keep PileupSummaryInfos_slimmedAddPileupInfo__PAT', + 'keep double_*__RECO', + 'keep recoBeamSpot_offlineBeamSpot__RECO', + 'keep *_electronMVAValueMapProducer_*_USER', ## Value Map with the electrons ID MVA values + 'keep floatedmValueMap_offlineSlimmedPrimaryVertices__PAT', + 'keep patPackedTriggerPrescales_patTrigger__PAT', + 'keep patElectrons_slimmedElectrons__PAT', + 'keep patJets_*__PAT', + 'keep patMETs_*__PAT', ## MET + 'keep patMuons_slimmedMuons__PAT', + 'keep patPackedCandidates_packedPFCandidates__PAT', + 'keep patPackedGenParticles_packedGenParticles__PAT', + 'keep patTaus_slimmedTaus__PAT', + 'keep patTriggerObjectStandAlones_selectedPatTrigger__PAT', + 'keep recoGenJets_slimmedGenJets__PAT', + 'keep recoGenParticles_prunedGenParticles__PAT', + 'keep recoVertexs_offlineSlimmedPrimaryVertices__PAT', + 'keep recoVertexCompositePtrCandidates_slimmedSecondaryVertices__PAT', + 'keep *_l1extraParticles_*_*', + 'keep *_METSignificance_*_USER']) + +allBranches = cms.untracked.vstring(['keep *']) + +process.load("RecoMET.METProducers.METSignificance_cfi") +process.load("RecoMET.METProducers.METSignificanceParams_cfi") + +process.bbttSkim = cms.EDFilter("SkimFilterMiniAOD", + vertexSrc = cms.untracked.InputTag('offlineSlimmedPrimaryVertices'), + muonSrc = cms.untracked.InputTag('slimmedMuons'), + electronSrc=cms.untracked.InputTag("slimmedElectrons"), + tauSrc = cms.untracked.InputTag("slimmedTaus") + ) +## Load module for Electron MVA ID +## It will append a value maps the miniAOD, that it's accesible throught a well Handle +## Example code here: +## https://github.com/ikrav/EgammaWork/blob/ntupler_and_VID_demos_7.4.12/ElectronNtupler/plugins/ElectronNtuplerVIDwithMVADemo.cc#L99 +## process.load("RecoEgamma.ElectronIdentification.ElectronMVAValueMapProducer_cfi") +##------------- +from PhysicsTools.SelectorUtils.tools.vid_id_tools import * +# turn on VID producer, indicate data format to be +# DataFormat.AOD or DataFormat.MiniAOD, as appropriate +dataFormat = DataFormat.MiniAOD + +switchOnVIDElectronIdProducer(process, dataFormat) ##also compute a maps with the electrons that pass an MVA cut + +# define which IDs we want to produce +my_id_modules = ['RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Spring15_25ns_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_Trig_V1_cff', + 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring15_25ns_nonTrig_V1_cff'] + +#add them to the VID producer +for idmod in my_id_modules: + setupAllVIDIdsInModule(process,idmod,setupVIDElectronSelection) +##------------ +#------------- +# Output ROOT file +#------------- +process.TFileService = cms.Service("TFileService", fileName = cms.string("syncTree.root") ) + +#------------- +# SyncTree Producer +#------------- +process.synctupler = cms.EDAnalyzer('SyncTreeProducer', + + genParticles = cms.InputTag("genParticles"), + # + # Objects specific to MiniAOD format + # + + tauSrc = cms.InputTag("slimmedTaus"), + muonSrc = cms.InputTag("slimmedMuons"), + vtxSrc = cms.InputTag("offlineSlimmedPrimaryVertices"), + jetSrc = cms.InputTag("slimmedJets"), + ##pfMETSrc = cms.InputTag("slimmedMETsNoHF"), + pfMETSrc = cms.InputTag("slimmedMETs"), + bits = cms.InputTag("TriggerResults","","HLT"), + prescales = cms.InputTag("patTrigger"), + objects = cms.InputTag("selectedPatTrigger"), + ) + +process.p = cms.Path( + #process.electronMVAValueMapProducer* + process.METSignificance* + process.egmGsfElectronIDSequence* + process.bbttSkim* + process.synctupler + ) + + +process.out = cms.OutputModule("PoolOutputModule", + compressionLevel = cms.untracked.int32(4), + compressionAlgorithm = cms.untracked.string('LZMA'), + eventAutoFlushCompressedSize = cms.untracked.int32(15728640), + fileName = cms.untracked.string('skimBranches_Signal_miniV2.root'), + SelectEvents = cms.untracked.PSet( SelectEvents = cms.vstring('p') ), + outputCommands = skimmedBranches, + #outputCommands = tausBranch, + #outputCommands = allBranches, + dropMetaData = cms.untracked.string('ALL'), + fastCloning = cms.untracked.bool(False), + overrideInputFileSplitLevels = cms.untracked.bool(True) +) + +process.endpath= cms.EndPath(process.out) + + diff --git a/microAODProduction/python/syncTreeProducer_cfg.py b/microAODProduction/python/syncTreeProducer_cfg.py index de0e3684..ea3cc480 100755 --- a/microAODProduction/python/syncTreeProducer_cfg.py +++ b/microAODProduction/python/syncTreeProducer_cfg.py @@ -27,6 +27,22 @@ VarParsing.multiplicity.singleton, VarParsing.varType.bool, "Include Sim. Default: False") +options.register ('isData', + False, + VarParsing.multiplicity.singleton, + VarParsing.varType.bool, + "Include Sim. Default: False") +options.register ('runOnCrab', + False, + VarParsing.multiplicity.singleton, + VarParsing.varType.bool, + "Indicates if script will be executed on CRAB.") +options.register ('sampleType', + 'Spring15MC', + VarParsing.multiplicity.singleton, + VarParsing.varType.string, + "Indicates the sample type: Spring15MC, Run2015B, Run2015C, Run2015D") + options.parseArguments() @@ -37,31 +53,40 @@ from HHbbTauTau.RunTools.readFileList import * process.source = cms.Source ("PoolSource", fileNames = cms.untracked.vstring()) -readFileList(process.source.fileNames, options.fileList, options.fileNamePrefix) - -process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(options.maxEvents) ) +if not options.runOnCrab: + readFileList(process.source.fileNames, options.fileList, options.fileNamePrefix) + process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(options.maxEvents) ) process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(False) ) #----------------------------- # Geometry #----------------------------- -process.load("Configuration.StandardSequences.Geometry_cff") +process.load("Configuration.Geometry.GeometryIdeal_cff") #----------------------------- # Magnetic Field #----------------------------- process.load('Configuration.StandardSequences.MagneticField_AutoFromDBCurrent_cff') #------------- -# Global Tag +# Global Tag and Lumi #------------- -process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") +import FWCore.PythonUtilities.LumiList as LumiList +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_condDBv2_cff') +from Configuration.AlCa.GlobalTag_condDBv2 import GlobalTag # NOTE: the pick the right global tag! # for PHYS14 scenario PU4bx50 : global tag is ??? # for PHYS14 scenario PU20bx25: global tag is PHYS14_25_V1 # as a rule, find the global tag in the DAS under the Configs for given dataset #process.GlobalTag.globaltag = 'PHYS14_25_V1::All' -process.GlobalTag.globaltag = options.globalTag + +runOnData = options.isData + +if runOnData: + process.GlobalTag.globaltag = '74X_dataRun2_reMiniAOD_v1' + process.source.lumisToProcess = LumiList.LumiList(filename = '/cmshome/caputo/HH_bbTauTau/Run2/CMSSW_7_4_12_patch4/src/HHbbTauTau/microAODProduction/json/Cert_246908-260627_13TeV_PromptReco_Collisions15_25ns_JSON.txt').getVLuminosityBlockRange() +else: + process.GlobalTag.globaltag = '74X_mcRun2_asymptotic_v4' #------------- # Output ROOT file @@ -78,13 +103,16 @@ # Objects specific to MiniAOD format # - tauSrc = cms.InputTag("slimmedTaus"), - muonSrc = cms.InputTag("slimmedMuons"), - vtxSrc = cms.InputTag("offlineSlimmedPrimaryVertices"), - pfMETSrc = cms.InputTag("slimmedMETs"), - bits = cms.InputTag("TriggerResults","","HLT"), - prescales = cms.InputTag("patTrigger"), - objects = cms.InputTag("selectedPatTrigger"), - ) + tauSrc = cms.InputTag("slimmedTaus"), + muonSrc = cms.InputTag("slimmedMuons"), + vtxSrc = cms.InputTag("offlineSlimmedPrimaryVertices"), + jetSrc = cms.InputTag("slimmedJets"), + ##pfMETSrc = cms.InputTag("slimmedMETsNoHF"), + pfMETSrc = cms.InputTag("slimmedMETs"), + bits = cms.InputTag("TriggerResults","","HLT"), + prescales = cms.InputTag("patTrigger"), + objects = cms.InputTag("selectedPatTrigger"), + sampleType = cms.string(options.sampleType), + ) process.p = cms.Path(process.synctupler)