From 031b8d635b90c8c2a0b7a7be47444f33fd11a33f Mon Sep 17 00:00:00 2001 From: Giulio Eulisse Date: Thu, 12 Dec 2013 12:03:58 -0800 Subject: [PATCH] --- yaml --- r: 133118 b: refs/heads/gem-CR-stand c: a548aef4cd1e863d83ebb990ec41004492a42450 h: "refs/heads/CMSSW_6_2_X_SLHC" --- [refs] | 2 +- .../macros/PlotAlignmentValidation.C | 17 +- .../TkAlAllInOneTool/offlineValidation.py | 21 +- .../offlineValidationTemplates.py | 11 +- .../TrackerOfflineValidationSummary_cfi.py | 11 +- ...TrackerOfflineValidation_Standalone_cff.py | 24 +- .../scripts/validateAlignments.py | 15 +- .../SiStripObjects/src/SiStripFecCabling.cc | 6 +- .../Provenance/interface/ModuleDescription.h | 13 +- .../Provenance/src/ModuleDescription.cc | 11 +- .../interface/SiPixelRecHitQuality.h | 16 +- .../src/SiPixelRecHitQuality.cc | 2 +- .../FWCore/ParameterSet/python/Types.py | 26 +- .../PluginManager/interface/PluginFactory.h | 2 +- .../Services/plugins/ConcurrentModuleTimer.cc | 186 +++++++ .../python/HLT_8E33v2_Famos_cff.py | 64 ++- .../Configuration/python/HLT_8E33v2_cff.py | 64 ++- .../Configuration/python/HLT_FULL_cff.py | 64 ++- .../python/HLT_GRun_Famos_cff.py | 64 ++- .../Configuration/python/HLT_GRun_cff.py | 64 ++- .../Configuration/python/HLT_HIon_cff.py | 4 +- .../Configuration/python/HLT_PIon_cff.py | 64 ++- .../Configuration/test/OnData_HLT_8E33v2.py | 67 ++- .../Configuration/test/OnData_HLT_GRun.py | 67 ++- .../Configuration/test/OnData_HLT_HIon.py | 7 +- .../Configuration/test/OnData_HLT_PIon.py | 67 ++- .../Configuration/test/OnLine_HLT_8E33v2.py | 67 ++- .../Configuration/test/OnLine_HLT_GRun.py | 67 ++- .../Configuration/test/OnLine_HLT_HIon.py | 7 +- .../Configuration/test/OnLine_HLT_PIon.py | 67 ++- .../plugins/BuildFile.xml | 32 -- .../plugins/ImpactParameterCalibration.cc | 442 --------------- .../plugins/SumHistoCalibration.cc | 323 ----------- .../plugins/TrackClassMatch.h | 75 --- .../plugins/TrackProbabilityXMLtoDB.cc | 160 ------ .../test/2d.xml.new.gz | Bin 25482 -> 0 bytes .../test/3d.xml.new.gz | Bin 35359 -> 0 bytes .../test/XMLtoBuffer-blob_cfg.py | 64 --- .../test/XMLtoBuffer_cfg.py | 66 --- .../test/btagAnalysis.cfg | 118 ---- .../ImpactParameterLearning/test/calib_cfg.py | 97 ---- .../test/eventsetuptoXML_cfg.py | 67 --- .../test/histoMaker.py | 78 --- .../test/produceXMLFiles.cfg | 81 --- .../test/sumXMLFiles.cfg | 53 -- .../ImpactParameterLearning/test/sumXMLs.cfg | 38 -- .../test/sumXMLs.cfg.py | 44 -- .../JetTagMVALearning/plugins/BuildFile.xml | 13 - .../plugins/EventProgress.cc | 57 -- .../JetTagMVALearning/plugins/EventProgress.h | 21 - .../plugins/JetTagMVAExtractor.cc | 516 ------------------ .../plugins/JetTagMVATrainer.cc | 293 ---------- .../plugins/JetTagMVATrainer.h | 58 -- .../plugins/JetTagMVATreeTrainer.cc | 453 --------------- .../JetTagMVALearning/plugins/module.cc | 27 - .../CSV_LR/TrainExtraVars/Train_NoVertex.xml | 371 ------------- .../TrainExtraVars/Train_NoVertex_B_C.xml | 224 -------- .../TrainExtraVars/Train_NoVertex_B_DUSG.xml | 223 -------- .../TrainExtraVars/Train_PseudoVertex.xml | 427 --------------- .../TrainExtraVars/Train_PseudoVertex_B_C.xml | 250 --------- .../Train_PseudoVertex_B_DUSG.xml | 251 --------- .../TrainExtraVars/Train_RecoVertex.xml | 470 ---------------- .../TrainExtraVars/Train_RecoVertex_B_C.xml | 275 ---------- .../Train_RecoVertex_B_DUSG.xml | 272 --------- .../test/CSV_LR/Train_NoVertex.xml | 329 ----------- .../test/CSV_LR/Train_NoVertex_B_C.xml | 202 ------- .../test/CSV_LR/Train_NoVertex_B_DUSG.xml | 202 ------- .../test/CSV_LR/Train_PseudoVertex.xml | 369 ------------- .../test/CSV_LR/Train_PseudoVertex_B_C.xml | 221 -------- .../test/CSV_LR/Train_PseudoVertex_B_DUSG.xml | 222 -------- .../test/CSV_LR/Train_RecoVertex.xml | 411 -------------- .../test/CSV_LR/Train_RecoVertex_B_C.xml | 238 -------- .../test/CSV_LR/Train_RecoVertex_B_DUSG.xml | 237 -------- .../test/CSV_LR/VariableExtractor_LR_cfg.py | 156 ------ .../test/CSV_LR/doTrainingLR.sh | 155 ------ .../test/MVATrainer_No_B_C_cfg.py | 46 -- .../test/MVATrainer_No_B_DUSG_cfg.py | 47 -- .../test/MVATrainer_Pseudo_B_C_cfg.py | 46 -- .../test/MVATrainer_Pseudo_B_DUSG_cfg.py | 46 -- .../test/MVATrainer_Reco_B_C_cfg.py | 46 -- .../test/MVATrainer_Reco_B_DUSG_cfg.py | 46 -- .../JetTagMVALearning/test/Save_No_B_C.xml | 106 ---- .../JetTagMVALearning/test/Save_No_B_DUSG.xml | 106 ---- .../test/Save_Pseudo_B_C.xml | 114 ---- .../test/Save_Pseudo_B_DUSG.xml | 114 ---- .../JetTagMVALearning/test/Save_Reco_B_C.xml | 124 ----- .../test/Save_Reco_B_DUSG.xml | 124 ----- .../JetTagMVALearning/test/SelectVars.C | 100 ---- .../JetTagMVALearning/test/biasForXml.cpp | 90 --- .../test/copyFrontierToMVA_cfg.py | 27 - .../test/copyFrontierToSQLite_cfg.py | 42 -- .../test/copyMVAToSQLite_cfg.py | 46 -- .../test/copySQLiteToDevDB_cfg.py | 46 -- .../JetTagMVALearning/test/fitJetEtaPt.cpp | 180 ------ .../JetTagMVALearning/test/histoJetEtaPt.C | 64 --- .../JetTagMVALearning/test/histoJetEtaPt.cpp | 74 --- .../test/macros/CompareTaggers.C | 252 --------- .../test/macros/CompareTrainings.C | 105 ---- .../test/macros/CompareTrainings_EtaBins.C | 130 ----- .../JetTagMVALearning/test/macros/tdrstyle.C | 147 ----- .../METAlgorithms/interface/PFSpecificAlgo.h | 7 +- .../interface/SignPFSpecificAlgo.h | 42 +- .../METAlgorithms/src/PFSpecificAlgo.cc | 28 - .../METAlgorithms/src/SignPFSpecificAlgo.cc | 122 +++-- .../METProducers/interface/CaloMETProducer.h | 64 +++ .../METProducers/interface/ElseMETProducer.h | 51 ++ .../METProducers/interface/GenMETProducer.h | 59 ++ .../interface/PFClusterMETProducer.h | 52 ++ .../METProducers/interface/PFMETProducer.h | 65 +++ .../METProducers/interface/TCMETProducer.h | 50 ++ .../METProducers/python/CaloMET_cfi.py | 40 +- .../RecoMET/METProducers/python/HTMET_cfi.py | 16 +- .../METProducers/python/PFClusterMET_cfi.py | 27 +- .../RecoMET/METProducers/python/PFMET_cfi.py | 31 +- .../RecoMET/METProducers/python/TCMET_cfi.py | 136 +++-- .../python/genMetCaloAndNonPrompt_cfi.py | 28 +- .../METProducers/python/genMetCalo_cfi.py | 36 +- .../python/genMetFromGenJets_cfi.py | 2 +- .../METProducers/python/genMetTrue_cfi.py | 37 +- .../METProducers/python/pfChargedMET_cfi.py | 2 +- .../METProducers/src/CaloMETProducer.cc | 77 +++ .../METProducers/src/ElseMETProducer.cc | 67 +++ .../METProducers/src/GenMETProducer.cc | 61 +++ .../RecoMET/METProducers/src/METProducer.cc | 17 +- .../METProducers/src/PFClusterMETProducer.cc | 63 +++ .../RecoMET/METProducers/src/PFMETProducer.cc | 87 +++ .../RecoMET/METProducers/src/TCMETProducer.cc | 43 ++ .../plugins/PFClusterProducer.cc | 6 +- .../RecoTau/interface/RecoTauBuilderPlugins.h | 18 +- .../RecoTau/interface/RecoTauPiZeroPlugins.h | 6 +- .../interface/RecoTauVertexAssociator.h | 6 +- .../interface/TauDiscriminationProducerBase.h | 9 +- ...ecoTauDiscriminationAgainstElectronMVA2.cc | 7 +- ...ecoTauDiscriminationAgainstElectronMVA3.cc | 7 +- .../PFRecoTauDiscriminationAgainstMuon2.cc | 4 +- ...uDiscriminationByFlightPathSignificance.cc | 14 +- .../PFRecoTauDiscriminationByIsolation.cc | 15 +- .../PFRecoTauDiscriminationByMVAIsolation.cc | 4 +- .../plugins/PFRecoTauTagInfoProducer.cc | 15 +- .../plugins/PFTauDecayModeCutMultiplexer.cc | 9 +- .../RecoTauBuilderCombinatoricPlugin.cc | 4 +- .../plugins/RecoTauBuilderConePlugin.cc | 4 +- .../RecoTau/plugins/RecoTauCleaner.cc | 6 +- .../plugins/RecoTauDecayModeCutMultiplexer.cc | 4 +- .../RecoTauDiscriminantCleanerPlugin.cc | 8 +- .../RecoTauDiscriminantCutMultiplexer.cc | 8 +- .../plugins/RecoTauElectronRejectionPlugin.cc | 4 +- .../plugins/RecoTauEnergyRecoveryPlugin.cc | 6 +- .../plugins/RecoTauEnergyRecoveryPlugin2.cc | 6 +- ...ecoTauImpactParameterSignificancePlugin.cc | 8 +- .../plugins/RecoTauJetRegionProducer.cc | 9 +- .../RecoTau/plugins/RecoTauPhotonFilter.cc | 4 +- .../RecoTauPiZeroCombinatoricPlugin.cc | 4 +- .../RecoTau/plugins/RecoTauPiZeroProducer.cc | 12 +- .../plugins/RecoTauPiZeroStripPlugin.cc | 7 +- .../plugins/RecoTauPiZeroStripPlugin2.cc | 8 +- .../plugins/RecoTauPiZeroTrivialPlugin.cc | 4 +- .../plugins/RecoTauPiZeroUnembedder.cc | 4 +- .../RecoTau/plugins/RecoTauProducer.cc | 21 +- .../plugins/RecoTauStringCleanerPlugin.cc | 4 +- .../RecoTauTauTagInfoWorkaroundModifier.cc | 9 +- .../RecoTau/plugins/RecoTauTwoProngFilter.cc | 4 +- .../RecoTau/src/RecoTauBuilderPlugins.cc | 2 +- .../RecoTau/src/RecoTauVertexAssociator.cc | 5 +- .../src/TauDiscriminationProducerBase.cc | 4 +- .../RecoTauDecayModeTruthMatchPlugin.cc | 4 +- .../plugins/RecoTauDistanceFromTruthPlugin.cc | 4 +- .../plugins/RecoTauObjectEmbedderPlugin.cc | 4 +- .../plugins/RecoTauRandomCleanerPlugin.cc | 4 +- .../data/cms-valgrind-helgrind.supp | 137 +++++ .../Utilities/StaticAnalyzers/BuildFile.xml | 1 + .../scripts/create_calls_db.sh | 24 + .../scripts/run_class_dumper.sh | 7 +- .../StaticAnalyzers/src/ClassChecker.cpp | 171 +----- .../StaticAnalyzers/src/ClassDumper.cpp | 117 ++-- .../StaticAnalyzers/src/ClassDumper.h | 2 +- .../StaticAnalyzers/src/CmsSupport.cpp | 10 +- .../StaticAnalyzers/src/EDMPluginDumper.cc | 28 +- .../StaticAnalyzers/src/FunctionChecker.cpp | 67 ++- .../StaticAnalyzers/src/FunctionDumper.cpp | 71 ++- .../interface/GlobalRecHitsAnalyzer.h | 17 + .../interface/GlobalRecHitsHistogrammer.h | 1 + .../interface/GlobalRecHitsProducer.h | 17 + .../src/GlobalRecHitsAnalyzer.cc | 60 +- .../src/GlobalRecHitsHistogrammer.cc | 4 +- .../src/GlobalRecHitsProducer.cc | 59 +- .../HcalHits/src/HcalSimHitsValidation.cc | 1 - .../Validation/HcalHits/src/ZdcSimHitStudy.cc | 5 - 188 files changed, 2749 insertions(+), 11771 deletions(-) create mode 100644 branches/gem-CR-stand/FWCore/Services/plugins/ConcurrentModuleTimer.cc delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/BuildFile.xml delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/ImpactParameterCalibration.cc delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/SumHistoCalibration.cc delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/TrackClassMatch.h delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/TrackProbabilityXMLtoDB.cc delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/2d.xml.new.gz delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/3d.xml.new.gz delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/XMLtoBuffer-blob_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/XMLtoBuffer_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/btagAnalysis.cfg delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/calib_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/eventsetuptoXML_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/histoMaker.py delete mode 100755 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/produceXMLFiles.cfg delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLFiles.cfg delete mode 100755 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLs.cfg delete mode 100644 branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLs.cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/BuildFile.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/EventProgress.cc delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/EventProgress.h delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/JetTagMVAExtractor.cc delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/JetTagMVATrainer.cc delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/JetTagMVATrainer.h delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/JetTagMVATreeTrainer.cc delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/module.cc delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_NoVertex.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_NoVertex_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_NoVertex_B_DUSG.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_PseudoVertex.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_PseudoVertex_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_PseudoVertex_B_DUSG.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_RecoVertex.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_RecoVertex_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/TrainExtraVars/Train_RecoVertex_B_DUSG.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_NoVertex.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_NoVertex_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_NoVertex_B_DUSG.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_PseudoVertex.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_PseudoVertex_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_PseudoVertex_B_DUSG.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_RecoVertex.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_RecoVertex_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/Train_RecoVertex_B_DUSG.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/VariableExtractor_LR_cfg.py delete mode 100755 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/CSV_LR/doTrainingLR.sh delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/MVATrainer_No_B_C_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/MVATrainer_No_B_DUSG_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/MVATrainer_Pseudo_B_C_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/MVATrainer_Pseudo_B_DUSG_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/MVATrainer_Reco_B_C_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/MVATrainer_Reco_B_DUSG_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/Save_No_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/Save_No_B_DUSG.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/Save_Pseudo_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/Save_Pseudo_B_DUSG.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/Save_Reco_B_C.xml delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/Save_Reco_B_DUSG.xml delete mode 100755 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/SelectVars.C delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/biasForXml.cpp delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/copyFrontierToMVA_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/copyFrontierToSQLite_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/copyMVAToSQLite_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/copySQLiteToDevDB_cfg.py delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/fitJetEtaPt.cpp delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/histoJetEtaPt.C delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/histoJetEtaPt.cpp delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/macros/CompareTaggers.C delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/macros/CompareTrainings.C delete mode 100644 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/macros/CompareTrainings_EtaBins.C delete mode 100755 branches/gem-CR-stand/RecoBTau/JetTagMVALearning/test/macros/tdrstyle.C create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/interface/CaloMETProducer.h create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/interface/ElseMETProducer.h create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/interface/GenMETProducer.h create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/interface/PFClusterMETProducer.h create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/interface/PFMETProducer.h create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/interface/TCMETProducer.h create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/src/CaloMETProducer.cc create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/src/ElseMETProducer.cc create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/src/GenMETProducer.cc create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/src/PFClusterMETProducer.cc create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/src/PFMETProducer.cc create mode 100644 branches/gem-CR-stand/RecoMET/METProducers/src/TCMETProducer.cc create mode 100644 branches/gem-CR-stand/Utilities/ReleaseScripts/data/cms-valgrind-helgrind.supp create mode 100755 branches/gem-CR-stand/Utilities/StaticAnalyzers/scripts/create_calls_db.sh diff --git a/[refs] b/[refs] index 97a466828ead5..174dc52bc050e 100644 --- a/[refs] +++ b/[refs] @@ -2,4 +2,4 @@ refs/heads/gh-pages: 4bec1f03ca2f14e90d0ca17351c4d42d84ec2c82 "refs/heads/CMSSW_6_2_X_SLHC": 5893ef29c12b2718b3c1385e821170f91afb5446 "refs/heads/CMSSW_5_3_X": 90eebdc93fdcd1c69c8670cdb1376c336a5876bd -refs/heads/gem-CR-stand: 0b74e63c196b14f1ea7fd6dae195bdc7989c8283 +refs/heads/gem-CR-stand: a548aef4cd1e863d83ebb990ec41004492a42450 diff --git a/branches/gem-CR-stand/Alignment/OfflineValidation/macros/PlotAlignmentValidation.C b/branches/gem-CR-stand/Alignment/OfflineValidation/macros/PlotAlignmentValidation.C index 06c6e78f234c5..401f45105dd52 100644 --- a/branches/gem-CR-stand/Alignment/OfflineValidation/macros/PlotAlignmentValidation.C +++ b/branches/gem-CR-stand/Alignment/OfflineValidation/macros/PlotAlignmentValidation.C @@ -503,7 +503,7 @@ void PlotAlignmentValidation::plotSS( const std::string& options, const std::str //------------------------------------------------------------------------------ void PlotAlignmentValidation::plotDMR(const std::string& variable, Int_t minHits, const std::string& options) { - // If several, comma-separated values are given, + // If several, comma-separated values are given in 'variable', // call plotDMR with each value separately. // If a comma is found, the string is divided to two. // (no space allowed) @@ -525,6 +525,14 @@ void PlotAlignmentValidation::plotDMR(const std::string& variable, Int_t minHits return; } + // options: + // -plain (default, the whole distribution) + // -split (distribution splitted to two) + // -layers (plain db for each layer/disc superimposed in one plot) + // -layersSeparate (plain db for each layer/disc in separate plots) + // -layersSplit (splitted db for each layers/disc in one plot) + // -layersSplitSeparate (splitted db, for each layers/disc in separate plots) + TRegexp layer_re("layer=[0-9]+"); bool plotPlain = false, plotSplits = false, plotLayers = false; int plotLayerN = 0; @@ -565,10 +573,13 @@ void PlotAlignmentValidation::plotDMR(const std::string& variable, Int_t minHits plotinfo.plotPlain = plotPlain; plotinfo.plotLayers = plotLayers; + // width in cm + // for DMRS, use 100 bins in range +-10 um, bin width 0.2um + // if modified, check also TrackerOfflineValidationSummary_cfi.py and TrackerOfflineValidation_Standalone_cff.py if (variable == "meanX") { plotinfo.nbins = 50; plotinfo.min = -0.001; plotinfo.max = 0.001; } else if (variable == "meanY") { plotinfo.nbins = 50; plotinfo.min = -0.005; plotinfo.max = 0.005; } - else if (variable == "medianX") { plotinfo.nbins = 50; plotinfo.min = -0.005; plotinfo.max = 0.005; } - else if (variable == "medianY") { plotinfo.nbins = 50; plotinfo.min = -0.005; plotinfo.max = 0.005; } + else if (variable == "medianX") { plotinfo.nbins = 100; plotinfo.min = -0.001; plotinfo.max = 0.001; } + else if (variable == "medianY") { plotinfo.nbins = 100; plotinfo.min = -0.001; plotinfo.max = 0.001; } else if (variable == "meanNormX") { plotinfo.nbins = 100; plotinfo.min = -2.0; plotinfo.max = 2.0; } else if (variable == "meanNormY") { plotinfo.nbins = 100; plotinfo.min = -2.0; plotinfo.max = 2.0; } else if (variable == "rmsX") { plotinfo.nbins = 100; plotinfo.min = 0.0; plotinfo.max = 0.1; } diff --git a/branches/gem-CR-stand/Alignment/OfflineValidation/python/TkAlAllInOneTool/offlineValidation.py b/branches/gem-CR-stand/Alignment/OfflineValidation/python/TkAlAllInOneTool/offlineValidation.py index ae4172ac989eb..f1ccc8d3efe8f 100644 --- a/branches/gem-CR-stand/Alignment/OfflineValidation/python/TkAlAllInOneTool/offlineValidation.py +++ b/branches/gem-CR-stand/Alignment/OfflineValidation/python/TkAlAllInOneTool/offlineValidation.py @@ -106,6 +106,13 @@ def __init__(self, valName, alignment,config): defaultDict = defaults ) self.general.update( offline ) self.__NJobs = self.general["parallelJobs"] + self.outputFiles = [] + for index in range(int(self.general["parallelJobs"])): + fName = replaceByMap("AlignmentValidation_"+self.name + +"_.oO[name]Oo._%d.root"%(index), + self.getRepMap()) + self.outputFiles.append(fName) + def createConfiguration(self, path, configBaseName = "TkAlOfflineValidation"): # if offline validation uses N parallel jobs, we create here N cfg files @@ -140,12 +147,7 @@ def createConfiguration(self, path, configBaseName = "TkAlOfflineValidation"): repMap.update({"nIndex": str(index)}) # Create the result file directly to datadir since should not use /tmp/ # see https://cern.service-now.com/service-portal/article.do?n=KB0000484 - repMap.update({ - "outputFile": replaceByMap("AlignmentValidation_" - + self.name + - "_.oO[name]Oo._.oO[nIndex]Oo..root", - repMap ) - }) + repMap.update({"outputFile": self.outputFiles[index]}) repMap["outputFile"] = os.path.expandvars( repMap["outputFile"] ) cfgs = {cfgName:replaceByMap(configTemplates.offlineParallelTemplate, @@ -168,12 +170,7 @@ def createScript(self, path, scriptBaseName = "TkAlOfflineValidation"): repMap["nIndex"]="" repMap["nIndex"]=str(index) repMap["CommandLine"]="" - repMap.update({ - "outputFile": replaceByMap("AlignmentValidation_" - + self.name + - "_.oO[name]Oo._.oO[nIndex]Oo..root", - repMap ) - }) + repMap.update({"outputFile": self.outputFiles[index]}) for cfg in self.configFiles: # The ugly solution here is to change the name for each parallel job cfgtemp = cfg.replace(str(numJobs-1)+"_cfg.py", diff --git a/branches/gem-CR-stand/Alignment/OfflineValidation/python/TkAlAllInOneTool/offlineValidationTemplates.py b/branches/gem-CR-stand/Alignment/OfflineValidation/python/TkAlAllInOneTool/offlineValidationTemplates.py index 29a85b390aff7..8c1e791f67f48 100644 --- a/branches/gem-CR-stand/Alignment/OfflineValidation/python/TkAlAllInOneTool/offlineValidationTemplates.py +++ b/branches/gem-CR-stand/Alignment/OfflineValidation/python/TkAlAllInOneTool/offlineValidationTemplates.py @@ -416,15 +416,8 @@ # ls -al .oO[datadir]Oo./AlignmentValidation*.root > .oO[datadir]Oo./log_rootfilelist.txt ls -al AlignmentValidation*.root > .oO[datadir]Oo./log_rootfilelist.txt -# Remove parallel job files if merged file exists -for file in $(cmsLs -l /store/caf/user/$USER/.oO[eosdir]Oo. |awk '{print $5}') -do - if [[ ${file} = /store/caf/user/$USER/.oO[eosdir]Oo./AlignmentValidation*_[0-9].root ]] - then - cmsRm ${file} - fi -done - +# Remove parallel job files +.oO[rmUnmerged]Oo. """ diff --git a/branches/gem-CR-stand/Alignment/OfflineValidation/python/TrackerOfflineValidationSummary_cfi.py b/branches/gem-CR-stand/Alignment/OfflineValidation/python/TrackerOfflineValidationSummary_cfi.py index 6c655f25fb222..39257f6656935 100644 --- a/branches/gem-CR-stand/Alignment/OfflineValidation/python/TrackerOfflineValidationSummary_cfi.py +++ b/branches/gem-CR-stand/Alignment/OfflineValidation/python/TrackerOfflineValidationSummary_cfi.py @@ -9,7 +9,10 @@ # DMR (distribution of median of residuals per module) of X coordinate (Strip) TH1DmrXprimeStripModules = cms.PSet( - Nbinx = cms.int32(200), xmin = cms.double(-0.05), xmax = cms.double(0.05) + # width 2.0 um +# Nbinx = cms.int32(500), xmin = cms.double(-0.05), xmax = cms.double(0.05) + # width 0.5 um + Nbinx = cms.int32(5000), xmin = cms.double(-0.05), xmax = cms.double(0.05) ), # DMR (distribution of median of residuals per module) of Y coordinate (Strip) @@ -19,12 +22,14 @@ # DMR (distribution of median of residuals per module) of X coordinate (Pixel) TH1DmrXprimePixelModules = cms.PSet( - Nbinx = cms.int32(200), xmin = cms.double(-0.05), xmax = cms.double(0.05) +# Nbinx = cms.int32(500), xmin = cms.double(-0.05), xmax = cms.double(0.05) + Nbinx = cms.int32(5000), xmin = cms.double(-0.05), xmax = cms.double(0.05) ), # DMR (distribution of median of residuals per module) of Y coordinate (Pixel) TH1DmrYprimePixelModules = cms.PSet( - Nbinx = cms.int32(200), xmin = cms.double(-0.05), xmax = cms.double(0.05) +# Nbinx = cms.int32(200), xmin = cms.double(-0.05), xmax = cms.double(0.05) + Nbinx = cms.int32(5000), xmin = cms.double(-0.05), xmax = cms.double(0.05) ) ) diff --git a/branches/gem-CR-stand/Alignment/OfflineValidation/python/TrackerOfflineValidation_Standalone_cff.py b/branches/gem-CR-stand/Alignment/OfflineValidation/python/TrackerOfflineValidation_Standalone_cff.py index a354119420cbd..c9faeb2052e31 100644 --- a/branches/gem-CR-stand/Alignment/OfflineValidation/python/TrackerOfflineValidation_Standalone_cff.py +++ b/branches/gem-CR-stand/Alignment/OfflineValidation/python/TrackerOfflineValidation_Standalone_cff.py @@ -14,11 +14,11 @@ #TrackerOfflineValidation.TH1NormXResStripModules.xmin = -3.0 #TrackerOfflineValidation.TH1NormXResStripModules.xmax = 3.0 -TrackerOfflineValidation.TH1XprimeResStripModules.Nbinx = 2000 -TrackerOfflineValidation.TH1XprimeResStripModules.xmin = -0.1 #-0.5 -TrackerOfflineValidation.TH1XprimeResStripModules.xmax = 0.1 #0.5 +TrackerOfflineValidation.TH1XprimeResStripModules.Nbinx = 5000 +TrackerOfflineValidation.TH1XprimeResStripModules.xmin = -0.05 #-0.5 +TrackerOfflineValidation.TH1XprimeResStripModules.xmax = 0.05 #0.5 -#TrackerOfflineValidation.TH1XResStripModules.Nbinx = 2000 +#TrackerOfflineValidation.TH1XResStripModules.Nbinx = 5000 #TrackerOfflineValidation.TH1XResStripModules.xmin = -0.5 #TrackerOfflineValidation.TH1XResStripModules.xmax = 0.5 @@ -26,7 +26,7 @@ TrackerOfflineValidation.TH1NormYResStripModules.xmin = -3.0 TrackerOfflineValidation.TH1NormYResStripModules.xmax = 3.0 -TrackerOfflineValidation.TH1YResStripModules.Nbinx = 2000 +TrackerOfflineValidation.TH1YResStripModules.Nbinx = 5000 TrackerOfflineValidation.TH1YResStripModules.xmin = -11.0 TrackerOfflineValidation.TH1YResStripModules.xmax = 11.0 @@ -38,11 +38,11 @@ #TrackerOfflineValidation.TH1NormXResPixelModules.xmin = -3.0 #TrackerOfflineValidation.TH1NormXResPixelModules.xmax = 3.0 -TrackerOfflineValidation.TH1XprimeResPixelModules.Nbinx = 2000 -TrackerOfflineValidation.TH1XprimeResPixelModules.xmin = -0.1 #-0.5 -TrackerOfflineValidation.TH1XprimeResPixelModules.xmax = 0.1 #0.5 +TrackerOfflineValidation.TH1XprimeResPixelModules.Nbinx = 5000 +TrackerOfflineValidation.TH1XprimeResPixelModules.xmin = -0.05 #-0.5 +TrackerOfflineValidation.TH1XprimeResPixelModules.xmax = 0.05 #0.5 -#TrackerOfflineValidation.TH1XResPixelModules.Nbinx = 2000 +#TrackerOfflineValidation.TH1XResPixelModules.Nbinx = 5000 #TrackerOfflineValidation.TH1XResPixelModules.xmin = -0.5 #TrackerOfflineValidation.TH1XResPixelModules.xmax = 0.5 @@ -50,9 +50,9 @@ TrackerOfflineValidation.TH1NormYResPixelModules.xmin = -3.0 TrackerOfflineValidation.TH1NormYResPixelModules.xmax = 3.0 -TrackerOfflineValidation.TH1YResPixelModules.Nbinx = 2000 -TrackerOfflineValidation.TH1YResPixelModules.xmin = -0.1 #-0.5 -TrackerOfflineValidation.TH1YResPixelModules.xmax = 0.1 #0.5 +TrackerOfflineValidation.TH1YResPixelModules.Nbinx = 5000 +TrackerOfflineValidation.TH1YResPixelModules.xmin = -0.05 #-0.5 +TrackerOfflineValidation.TH1YResPixelModules.xmax = 0.05 #0.5 TrackerOfflineValidation.TProfileXResStripModules.Nbinx = 34 TrackerOfflineValidation.TProfileXResStripModules.xmin = -1.02 diff --git a/branches/gem-CR-stand/Alignment/OfflineValidation/scripts/validateAlignments.py b/branches/gem-CR-stand/Alignment/OfflineValidation/scripts/validateAlignments.py index b12b0f53c2a49..fa3c73c0dfbec 100755 --- a/branches/gem-CR-stand/Alignment/OfflineValidation/scripts/validateAlignments.py +++ b/branches/gem-CR-stand/Alignment/OfflineValidation/scripts/validateAlignments.py @@ -298,14 +298,27 @@ def createParallelMergeScript( path, validations ): # introduced to merge individual validation outputs separately # -> avoids problems with merge script - repMap["haddLoop"] = "" + repMap["haddLoop"] = "mergeRetCode=0\n" + repMap["rmUnmerged"] = "if [[ mergeRetCode -eq 0 ]]; then\n" for validation in comparisonLists["OfflineValidationParallel"]: repMap["haddLoop"] = validation.appendToMergeParJobs(repMap["haddLoop"]) + repMap["haddLoop"] += "tmpMergeRetCode=${?}\n" + repMap["haddLoop"] += ("if [[ mergeRetCode -eq 0 ]]; " + "then mergeRetCode=${tmpMergeRetCode}; " + "fi\n") repMap["haddLoop"] += ("cmsStage -f " +validation.getRepMap()["outputFile"] +" " +validation.getRepMap()["resultFile"] +"\n") + for f in validation.outputFiles: + longName = os.path.join("/store/caf/user/$USER/", + validation.getRepMap()["eosdir"], f) + repMap["rmUnmerged"] += " cmsRm "+longName+"\n" + repMap["rmUnmerged"] += ("else\n" + " echo \"WARNING: Merging failed, unmerged" + " files won't be deleted.\"\n" + "fi\n") repMap["RunExtendedOfflineValidation"] = \ replaceByMap(configTemplates.extendedValidationExecution, repMap) diff --git a/branches/gem-CR-stand/CalibFormats/SiStripObjects/src/SiStripFecCabling.cc b/branches/gem-CR-stand/CalibFormats/SiStripObjects/src/SiStripFecCabling.cc index 60adea2698505..35958a2378d60 100644 --- a/branches/gem-CR-stand/CalibFormats/SiStripObjects/src/SiStripFecCabling.cc +++ b/branches/gem-CR-stand/CalibFormats/SiStripObjects/src/SiStripFecCabling.cc @@ -156,8 +156,7 @@ const SiStripModule& SiStripFecCabling::module( const FedChannelConnection& conn } if ( !ss.str().empty() ) { edm::LogWarning(mlCabling_) << ss.str(); } - static FedChannelConnection temp; - static const SiStripModule module(temp); + static const SiStripModule module{FedChannelConnection{}}; return module; } @@ -175,8 +174,7 @@ const SiStripModule& SiStripFecCabling::module( const uint32_t& dcu_id ) const { } } } - static const FedChannelConnection temp; - static const SiStripModule module(temp); + static const SiStripModule module{FedChannelConnection{}}; return module; } diff --git a/branches/gem-CR-stand/DataFormats/Provenance/interface/ModuleDescription.h b/branches/gem-CR-stand/DataFormats/Provenance/interface/ModuleDescription.h index 42b0e7adee256..73e75d4e72cf0 100644 --- a/branches/gem-CR-stand/DataFormats/Provenance/interface/ModuleDescription.h +++ b/branches/gem-CR-stand/DataFormats/Provenance/interface/ModuleDescription.h @@ -18,7 +18,7 @@ namespace edm { // once a module is born, these parts of the module's product provenance // are constant (change to ModuleDescription) - + class ModuleDescription { public: @@ -70,6 +70,15 @@ namespace edm { ///Returns a unique id each time called. Intended to be passed to ModuleDescription's constructor's modID argument. Thread safe. static unsigned int getUniqueID(); + ///Returns a value identifying an invalid id (the max unsigned int value) +#if !defined(__CINT__) && !defined(__MAKECINT__) && !defined(__REFLEX__) + static constexpr unsigned int invalidID() { + return std::numeric_limits::max(); + } +#else + static unsigned int invalidID(); +#endif + private: // ID of parameter set of the creator @@ -84,7 +93,7 @@ namespace edm { // The process configuration. ProcessConfiguration const* processConfigurationPtr_; - + unsigned int id_; }; diff --git a/branches/gem-CR-stand/DataFormats/Provenance/src/ModuleDescription.cc b/branches/gem-CR-stand/DataFormats/Provenance/src/ModuleDescription.cc index bbb002d532364..acedcefe0202a 100644 --- a/branches/gem-CR-stand/DataFormats/Provenance/src/ModuleDescription.cc +++ b/branches/gem-CR-stand/DataFormats/Provenance/src/ModuleDescription.cc @@ -18,13 +18,12 @@ namespace edm { moduleName_(), moduleLabel_(), processConfigurationPtr_(nullptr), - id_(std::numeric_limits::max()){} + id_(invalidID()){} ModuleDescription::ModuleDescription( ParameterSetID const& pid, std::string const& modName, - std::string const& modLabel) : ModuleDescription{pid, modName, modLabel, nullptr, - std::numeric_limits::max()} {} + std::string const& modLabel) : ModuleDescription{pid, modName, modLabel, nullptr, invalidID()} {} ModuleDescription::ModuleDescription( ParameterSetID const& pid, @@ -40,12 +39,12 @@ namespace edm { ModuleDescription::ModuleDescription( std::string const& modName, - std::string const& modLabel) : ModuleDescription{ParameterSetID(), modName, modLabel, nullptr,std::numeric_limits::max()} {} + std::string const& modLabel) : ModuleDescription{ParameterSetID(), modName, modLabel, nullptr, invalidID()} {} ModuleDescription::ModuleDescription( std::string const& modName, std::string const& modLabel, - ProcessConfiguration const* procConfig) : ModuleDescription{ParameterSetID(), modName, modLabel, procConfig,std::numeric_limits::max()} {} + ProcessConfiguration const* procConfig) : ModuleDescription{ParameterSetID(), modName, modLabel, procConfig, invalidID()} {} ModuleDescription::~ModuleDescription() {} @@ -104,7 +103,7 @@ namespace edm { ModuleDescription::getUniqueID() { return s_id++; } - + void ModuleDescription::write(std::ostream& os) const { os << "Module type=" << moduleName() << ", " diff --git a/branches/gem-CR-stand/DataFormats/TrackerRecHit2D/interface/SiPixelRecHitQuality.h b/branches/gem-CR-stand/DataFormats/TrackerRecHit2D/interface/SiPixelRecHitQuality.h index b5132ab036911..eb8c275e3b1ae 100644 --- a/branches/gem-CR-stand/DataFormats/TrackerRecHit2D/interface/SiPixelRecHitQuality.h +++ b/branches/gem-CR-stand/DataFormats/TrackerRecHit2D/interface/SiPixelRecHitQuality.h @@ -127,7 +127,7 @@ class SiPixelRecHitQuality { //--- Setters: the inverse of the above. //------------------------------------------------------ // - inline void setProbabilityXY( float prob, QualWordType & qualWord ) { + inline void setProbabilityXY( float prob, QualWordType & qualWord ) const { if(prob<0 || prob>1) { edm::LogWarning("OutOfBounds") << "Prob XY outside the bounds of the quality word. Defaulting to Prob=0. Prob = " << prob << " QualityWord = " << qualWord; prob=0; @@ -137,7 +137,7 @@ class SiPixelRecHitQuality { // cout << "Prob = " << prob << " --> Bits = " << raw << endl; qualWord |= ((raw & probX_mask) << probX_shift); } - inline void setProbabilityQ( float prob, QualWordType & qualWord ) { + inline void setProbabilityQ( float prob, QualWordType & qualWord ) const { if(prob<0 || prob>1) { edm::LogWarning("OutOfBounds") << "Prob Q outside the bounds of the quality word. Defaulting to Prob=0. Prob = " << prob << " QualityWord = " << qualWord; prob=0; @@ -149,7 +149,7 @@ class SiPixelRecHitQuality { } - inline void setQBin( int qbin, QualWordType & qualWord ) { + inline void setQBin( int qbin, QualWordType & qualWord ) const { if(qbin<0 || qbin >7) { edm::LogWarning("OutOfBounds") << "Qbin outside the bounds of the quality word. Defaulting to Qbin=0. Qbin = " << qbin << " QualityWord = " << qualWord; qbin=0; @@ -157,22 +157,22 @@ class SiPixelRecHitQuality { qualWord |= ((qbin & qBin_mask) << qBin_shift); } - inline void setIsOnEdge( bool flag, QualWordType & qualWord ) { + inline void setIsOnEdge( bool flag, QualWordType & qualWord ) const { qualWord |= ((flag & edge_mask) << edge_shift); } - inline void setHasBadPixels( bool flag, QualWordType & qualWord ) { + inline void setHasBadPixels( bool flag, QualWordType & qualWord ) const { qualWord |= ((flag & bad_mask) << bad_shift); } - inline void setSpansTwoROCs( bool flag, QualWordType & qualWord ) { + inline void setSpansTwoROCs( bool flag, QualWordType & qualWord ) const { qualWord |= ((flag & twoROC_mask) << twoROC_shift); } - inline void setHasFilledProb( bool flag, QualWordType & qualWord ) { + inline void setHasFilledProb( bool flag, QualWordType & qualWord ) const { qualWord |= ((flag & hasFilledProb_mask) << hasFilledProb_shift); } }; public: - static Packing thePacking; + static const Packing thePacking; }; #endif diff --git a/branches/gem-CR-stand/DataFormats/TrackerRecHit2D/src/SiPixelRecHitQuality.cc b/branches/gem-CR-stand/DataFormats/TrackerRecHit2D/src/SiPixelRecHitQuality.cc index 8a91ace4714ec..9dd3643ed0d3f 100644 --- a/branches/gem-CR-stand/DataFormats/TrackerRecHit2D/src/SiPixelRecHitQuality.cc +++ b/branches/gem-CR-stand/DataFormats/TrackerRecHit2D/src/SiPixelRecHitQuality.cc @@ -52,5 +52,5 @@ SiPixelRecHitQuality::Packing::Packing() } // Initialize the packing format singleton -SiPixelRecHitQuality::Packing SiPixelRecHitQuality::thePacking; +const SiPixelRecHitQuality::Packing SiPixelRecHitQuality::thePacking; diff --git a/branches/gem-CR-stand/FWCore/ParameterSet/python/Types.py b/branches/gem-CR-stand/FWCore/ParameterSet/python/Types.py index 1c0af25c1621d..f363805fe385e 100644 --- a/branches/gem-CR-stand/FWCore/ParameterSet/python/Types.py +++ b/branches/gem-CR-stand/FWCore/ParameterSet/python/Types.py @@ -39,6 +39,8 @@ def _valueFromString(value): return int32(int(value)) def insertInto(self, parameterSet, myname): parameterSet.addInt32(self.isTracked(), myname, self.value()) + def __nonzero__(self): + return self.value()!=0 class uint32(_SimpleParameterTypeBase): @@ -54,6 +56,8 @@ def _valueFromString(value): return uint32(long(value)) def insertInto(self, parameterSet, myname): parameterSet.addUInt32(self.isTracked(), myname, self.value()) + def __nonzero__(self): + return self.value()!=0 @@ -71,6 +75,8 @@ def _valueFromString(value): return int64(long(value)) def insertInto(self, parameterSet, myname): parameterSet.addInt64(self.isTracked(), myname, self.value()) + def __nonzero__(self): + return self.value()!=0 @@ -87,6 +93,8 @@ def _valueFromString(value): return uint64(long(value)) def insertInto(self, parameterSet, myname): parameterSet.addUInt64(self.isTracked(), myname, self.value()) + def __nonzero__(self): + return self.value()!=0 @@ -104,6 +112,8 @@ def _valueFromString(value): return double(float(value)) def insertInto(self, parameterSet, myname): parameterSet.addDouble(self.isTracked(), myname, float(self.value())) + def __nonzero__(self): + return self.value()!=0. import __builtin__ @@ -125,6 +135,8 @@ def _valueFromString(value): raise RuntimeError('can not make bool from string '+value) def insertInto(self, parameterSet, myname): parameterSet.addBool(self.isTracked(), myname, self.value()) + def __nonzero__(self): + return self.value() @@ -159,6 +171,8 @@ def insertInto(self, parameterSet, myname): #if value == '\0': # value = '' parameterSet.addString(self.isTracked(), myname, value) + def __nonzero__(self): + return len(self.value()) !=0 class EventID(_ParameterTypeBase): @@ -190,7 +204,7 @@ def _isValid(value): @staticmethod def _valueFromString(value): parts = value.split(":") - run = parts[0] + run = parts[0] try: lumi = parts[1] event = parts[2] @@ -1186,15 +1200,19 @@ class testTypes(unittest.TestCase): def testint32(self): i = int32(1) self.assertEqual(i.value(),1) + self.assert_(i) self.assertRaises(ValueError,int32,"i") i = int32._valueFromString("0xA") self.assertEqual(i.value(),10) + self.assert_(not int32(0)) def testuint32(self): i = uint32(1) self.assertEqual(i.value(),1) + self.assert_(i) i = uint32(0) self.assertEqual(i.value(),0) + self.assert_(not i) self.assertRaises(ValueError,uint32,"i") self.assertRaises(ValueError,uint32,-1) i = uint32._valueFromString("0xA") @@ -1203,9 +1221,11 @@ def testuint32(self): def testvint32(self): v = vint32() self.assertEqual(len(v),0) + self.assert_(not v) v.append(1) self.assertEqual(len(v),1) self.assertEqual(v[0],1) + self.assert_(v) v.append(2) v.insert(1,3) self.assertEqual(v[1],3) @@ -1219,8 +1239,10 @@ def testvint32(self): def testbool(self): b = bool(True) self.assertEqual(b.value(),True) + self.assert_(b) b = bool(False) self.assertEqual(b.value(),False) + self.assert_(not b) b = bool._valueFromString("2") self.assertEqual(b.value(),True) self.assertEqual(repr(b), "cms.bool(True)") @@ -1228,11 +1250,13 @@ def testString(self): s=string('this is a test') self.assertEqual(s.value(),'this is a test') self.assertEqual(repr(s), "cms.string(\'this is a test\')") + self.assert_(s) s=string('\0') self.assertEqual(s.value(),'\0') self.assertEqual(s.configValue(),"'\\0'") s2=string('') self.assertEqual(s2.value(),'') + self.assert_(not s2) def testvstring(self): a = vstring("", "Barack", "John", "Sarah", "Joe") self.assertEqual(len(a), 5) diff --git a/branches/gem-CR-stand/FWCore/PluginManager/interface/PluginFactory.h b/branches/gem-CR-stand/FWCore/PluginManager/interface/PluginFactory.h index fca59eda0e208..e325855531e3e 100644 --- a/branches/gem-CR-stand/FWCore/PluginManager/interface/PluginFactory.h +++ b/branches/gem-CR-stand/FWCore/PluginManager/interface/PluginFactory.h @@ -99,5 +99,5 @@ namespace edmplugin {\ #define EDM_PLUGIN_SYM2(x,y) x ## y #define DEFINE_EDM_PLUGIN(factory,type,name) \ -static factory::PMaker EDM_PLUGIN_SYM(s_maker , __LINE__ ) (name) +[[cms::thread_safe]] static factory::PMaker EDM_PLUGIN_SYM(s_maker , __LINE__ ) (name) diff --git a/branches/gem-CR-stand/FWCore/Services/plugins/ConcurrentModuleTimer.cc b/branches/gem-CR-stand/FWCore/Services/plugins/ConcurrentModuleTimer.cc new file mode 100644 index 0000000000000..c40e406a5fbb6 --- /dev/null +++ b/branches/gem-CR-stand/FWCore/Services/plugins/ConcurrentModuleTimer.cc @@ -0,0 +1,186 @@ +// -*- C++ -*- +// +// Package: Subsystem/Package +// Class : ConcurrentModuleTimer +// +// Implementation: +// [Notes on implementation] +// +// Original Author: Chris Jones +// Created: Tue, 10 Dec 2013 21:16:00 GMT +// +#include +#include +#include +#include + +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ServiceRegistry/interface/ActivityRegistry.h" +#include "FWCore/Utilities/interface/CPUTimer.h" +#include "FWCore/ServiceRegistry/interface/ServiceMaker.h" +#include "FWCore/ServiceRegistry/interface/SystemBounds.h" + + +namespace edm { + namespace service { + class ConcurrentModuleTimer { + public: + ConcurrentModuleTimer(edm::ParameterSet const& iConfig, edm::ActivityRegistry& iAR); + ~ConcurrentModuleTimer(); + //static void fillDescriptions(edm::ConfigurationDescriptions & descriptions); + private: + void start(); + void stop(); + + std::unique_ptr[]> m_timeSums; + std::chrono::high_resolution_clock::time_point m_time; + unsigned int m_nTimeSums; + unsigned int m_nModules; + std::atomic m_spinLock; + bool m_startedTiming; + }; + } +} + +using namespace edm::service; +// system include files + +// user include files + +// +// constants, enums and typedefs +// + +// +// static data member definitions +// + +// +// constructors and destructor +// +ConcurrentModuleTimer::ConcurrentModuleTimer(edm::ParameterSet const& iConfig, edm::ActivityRegistry& iReg): +m_time(), +m_nModules(0), +m_spinLock{false}, +m_startedTiming(false) +{ + iReg.watchPreModuleEvent([this](StreamContext const&, ModuleCallingContext const&){ + start(); + }); + iReg.watchPostModuleEvent([this](StreamContext const&, ModuleCallingContext const&){ + stop(); + }); + + iReg.watchPreModuleEventDelayedGet([this](StreamContext const&, ModuleCallingContext const&){ + stop(); + }); + iReg.watchPostModuleEventDelayedGet([this](StreamContext const&, ModuleCallingContext const&){ + start(); + }); + + iReg.watchPreallocate([this](edm::service::SystemBounds const& iBounds){ + m_nTimeSums =iBounds.maxNumberOfThreads()+1; + m_timeSums.reset(new std::atomic[m_nTimeSums]); + for(unsigned int i=0; i - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/ImpactParameterCalibration.cc b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/ImpactParameterCalibration.cc deleted file mode 100644 index eb58b4bd2c5d5..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/ImpactParameterCalibration.cc +++ /dev/null @@ -1,442 +0,0 @@ -// -*- C++ -*- -// -// Package: ImpactParameterCalibration -// Class: ImpactParameterCalibration -// -/**\class ImpactParameterCalibration ImpactParameterCalibration.cc RecoBTag/ImpactParameterCalibration/src/ImpactParameterCalibration.cc - - Description: - - Implementation: - -*/ -// -// Original Author: Jeremy Andrea/Andrea Rizzi -// Created: Mon Aug 6 16:10:38 CEST 2007 -// -// -// system include files - -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Utilities/General/interface/FileInPath.h" - -#include "FWCore/Framework/interface/IOVSyncValue.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" - - -#include "DataFormats/BTauReco/interface/TrackIPTagInfo.h" -#include "CondFormats/BTauObjects/interface/TrackProbabilityCalibration.h" -#include "CondFormats/BTauObjects/interface/CalibratedHistogram.h" - -#include "CondFormats/DataRecord/interface/BTagTrackProbability2DRcd.h" -#include "CondFormats/DataRecord/interface/BTagTrackProbability3DRcd.h" - -#include "TClass.h" - -#include "TBufferFile.h" - -#include "TBufferXML.h" -#include -#include -#include -#include -#include -#include - -#include "TrackClassMatch.h" - - -using namespace reco; -using namespace std; -// -// class decleration -// - - - -class ImpactParameterCalibration : public edm::EDAnalyzer { - public: - explicit ImpactParameterCalibration(const edm::ParameterSet&); - ~ImpactParameterCalibration(); - - - private: - virtual void beginJob() override ; - virtual void analyze(const edm::Event&, const edm::EventSetup&) override; - virtual void endJob() override ; - - virtual void initFromFirstES(const edm::EventSetup&); - edm::ParameterSet config; - bool m_needInitFromES; - TrackProbabilityCalibration * fromXml(const edm::FileInPath& xmlCalibration); - - static TrackProbabilityCategoryData createCategory(double pmin,double pmax, - double etamin, double etamax, - int nhitmin, int nhitmax, - int npixelhitsmin, int npixelhitsmax, - double cmin, double cmax, int withFirst) - { - TrackProbabilityCategoryData c; - c.pMin=pmin; - c.pMax=pmax; - c.etaMin=etamin; - c.etaMax=etamax; - c.nHitsMin=nhitmin; - c.nHitsMax=nhitmax; - c.nPixelHitsMin=npixelhitsmin; - c.nPixelHitsMax=npixelhitsmax; - c.chiMin=cmin; - c.chiMax=cmax; - c.withFirstPixel=withFirst; - return c; - } - - TrackProbabilityCalibration * m_calibration[2]; - edm::EDGetTokenT token_trackIPTagInfo; - edm::EDGetTokenT token_primaryVertex; - unsigned int minLoop, maxLoop; - -}; - -ImpactParameterCalibration::ImpactParameterCalibration(const edm::ParameterSet& iConfig):config(iConfig) -{ - m_needInitFromES = false; - token_trackIPTagInfo = consumes(iConfig.getParameter("tagInfoSrc")); - token_primaryVertex = consumes(iConfig.getParameter("primaryVertexSrc")); - bool createOnlyOne = iConfig.getUntrackedParameter("createOnlyOneCalibration", false); - minLoop=0; - maxLoop=1; - if (createOnlyOne == true){ - int whichCalib = iConfig.getUntrackedParameter("dimension", 2); - if (whichCalib==2){ - std::cout <<" Writing only 2D calibrations"< ipHandle; - iEvent.getByToken(token_trackIPTagInfo, ipHandle); - const TrackIPTagInfoCollection & ip = *(ipHandle.product()); - -// cout << "Found " << ip.size() << " TagInfo" << endl; - - Handle primaryVertex; - iEvent.getByToken(token_primaryVertex,primaryVertex); - - vector::iterator found; - vector::iterator it_begin; - vector::iterator it_end; - - - TrackIPTagInfoCollection::const_iterator it = ip.begin(); - for(; it != ip.end(); it++) - { - TrackRefVector selTracks=it->selectedTracks(); -// if(it->primaryVertex().isNull()) continue; - if(primaryVertex.product()->size() == 0) - { - std::cout << "No PV in the event!!" << std::endl; - continue; - } - const Vertex & pv = *(primaryVertex.product()->begin()); - - for(unsigned int i=minLoop; i <= maxLoop;i++) - { - it_begin=m_calibration[i]->data.begin(); - it_end=m_calibration[i]->data.end(); - - for(unsigned int j=0;jimpactParameterData()[j].ip3d.significance(); - else ipsig = it->impactParameterData()[j].ip2d.significance(); - TrackClassMatch::Input input(*selTracks[j],*it->jet(),pv); - if(ipsig < 0) - { - found = std::find_if(it_begin,it_end,bind1st(TrackClassMatch(),input)); -// std::cout << ip[j].significance() << std::endl; - if(found!=it_end) - found->histogram.fill(-ipsig); - else - {std::cout << "No category for this track!!" << std::endl; - std::cout << "p " <<(*selTracks[j]).p () << std::endl; - std::cout << "eta " << (*selTracks[j]).eta() << std::endl; - std::cout << "NHit " << (*selTracks[j]).numberOfValidHits() << std::endl; - std::cout << "NPixHit " << (*selTracks[j]).hitPattern().numberOfValidPixelHits() << std::endl; - std::cout << "FPIXHIT " << (*selTracks[j]).hitPattern().hasValidHitInFirstPixelBarrel() << std::endl;} - - } - } - } - } - - - -} - - - - - - - -void ImpactParameterCalibration::initFromFirstES(const edm::EventSetup& iSetup) -{ - using namespace edm; - - CalibratedHistogram hist(config.getParameter("nBins"),0,config.getParameter("maxSignificance")); - bool resetHistogram = config.getParameter("resetHistograms"); - ESHandle calib2DHandle; - iSetup.get().get(calib2DHandle); - ESHandle calib3DHandle; - iSetup.get().get(calib3DHandle); - const TrackProbabilityCalibration * ca[2]; - ca[0] = calib3DHandle.product(); - ca[1] = calib2DHandle.product(); - for(unsigned int i=minLoop;i <=maxLoop ;i++) - for(unsigned int j=0;jdata.size() ; j++) - { - TrackProbabilityCalibration::Entry e; - e.category=ca[i]->data[j].category; - - if(resetHistogram) - e.histogram=hist; - else - e.histogram=ca[i]->data[j].histogram; - - m_calibration[i]->data.push_back(e); - } - - -} - - -// ------------ method called once each job just before starting event loop ------------ -void -ImpactParameterCalibration::beginJob() -{ - using namespace edm; - m_calibration[0] = new TrackProbabilityCalibration(); - m_calibration[1] = new TrackProbabilityCalibration(); - - CalibratedHistogram hist(config.getParameter("nBins"),0,config.getParameter("maxSignificance")); - - std::string categories = config.getParameter("inputCategories"); - - if(categories == "HardCoded") - { - vector v; - //TrackProbabilityCategoryData {pMin, pMax, etaMin, etaMax, - //nHitsMin, nHitsMax, nPixelHitsMin, nPixelHitsMax, chiMin,chiMax, withFirstPixel; - //trackQuality; - v.push_back(createCategory(0, 5000, 0 , 2.5, 8 , 50, 1, 1, 0 , 5 , 0)); - v.push_back(createCategory(0, 5000, 0 , 2.5, 8 , 50, 2, 8, 2.5, 5 , 0)); - v.push_back(createCategory(0, 8 , 0 , 0.8, 8 , 50, 3, 8, 0 , 2.5, 0)); - v.push_back(createCategory(0, 8 , 0.8, 1.6, 8 , 50, 3, 8, 0 , 2.5, 0)); - v.push_back(createCategory(0, 8 , 1.6, 2.5, 8 , 50, 3, 8, 0 , 2.5, 0)); - v.push_back(createCategory(0, 8 , 0 , 2.5, 8 , 50, 2, 8, 0 , 2.5, 0)); - v.push_back(createCategory(8, 5000, 0 , 0.8, 8 , 50, 3, 8, 0 , 2.5, 0)); - v.push_back(createCategory(8, 5000, 0.8, 1.6, 8 , 50, 3, 8, 0 , 2.5, 0)); - v.push_back(createCategory(8, 5000, 1.6, 2.5, 8 , 50, 3, 8, 0 , 2.5, 0)); - v.push_back(createCategory(8, 5000, 0 , 2.5, 8 , 50, 2 ,2, 0 , 2.5, 0)); - for(unsigned int i=minLoop;i <=maxLoop ;i++) - for(unsigned int j=0;jdata.push_back(e); - } - - } - if(categories == "RootXML") - { - bool resetHistogram = config.getParameter("resetHistograms"); - const TrackProbabilityCalibration * ca[2]; - ca[0] = fromXml(config.getParameter("calibFile3d")); - ca[1] = fromXml(config.getParameter("calibFile2d")); - - for(unsigned int i=minLoop;i <=maxLoop ;i++) - for(unsigned int j=0;jdata.size() ; j++) - { - TrackProbabilityCalibration::Entry e; - e.category=ca[i]->data[j].category; - - if(resetHistogram) - e.histogram=hist; - else - e.histogram=ca[i]->data[j].histogram; - - m_calibration[i]->data.push_back(e); - } - - delete ca[0]; - delete ca[1]; - - } - if(categories == "EventSetup") - { - m_needInitFromES=true; - } - - - -/* edm::FileInPath f2d(m_xmlfilename2D); - edm::FileInPath f3d(m_xmlfilename3D); - calibrationNew = new AlgorithmCalibration((f3d.fullPath()).c_str()); - calibration2dNew = new AlgorithmCalibration((f2d.fullPath()).c_str()); - vector * bins =0; - if(m_resetData) - { - if(m_newBinning) bins = new vector(CalibratedHistogram::constantBinning(m_nBin,0,m_range)); - vector > data = calibrationNew->categoriesWithData(); - vector > data2d = calibration2dNew->categoriesWithData(); - std::cout << data.size() << std::endl; - for(unsigned int i = 0 ; i < data.size();i++) - { - data[i].second.reset(); - if(bins) data[i].second.setUpperLimits(*bins); - } - for(unsigned int i = 0 ; i < data2d.size();i++) - { - data2d[i].second.reset(); - if(bins) data2d[i].second.setUpperLimits(*bins); - } - - } - if(bins) delete bins; - -*/ - - -} - -TrackProbabilityCalibration * ImpactParameterCalibration::fromXml(const edm::FileInPath& xmlCalibration) - -{ - std::ifstream xmlFile(xmlCalibration.fullPath().c_str()); - if (!xmlFile.good()) - throw cms::Exception("BTauFakeMVAJetTagConditions") - << "File \"" << xmlCalibration.fullPath() - << "\" could not be opened for reading." - << std::endl; - std::ostringstream ss; - ss << xmlFile.rdbuf(); - xmlFile.close(); - TClass *classType = 0; - void *ptr = TBufferXML(TBuffer::kRead).ConvertFromXMLAny( - ss.str().c_str(), &classType, kTRUE, kFALSE); - if (!ptr) - throw cms::Exception("ImpactParameterCalibration") - << "Unknown error parsing XML serialization" - << std::endl; - - if (std::strcmp(classType->GetName(), - "TrackProbabilityCalibration")) { - classType->Destructor(ptr); - throw cms::Exception("ImpactParameterCalibration") - << "Serialized object has wrong C++ type." - << std::endl; - } - - return static_cast(ptr); -} - - - - -// ------------ method called once each job just after ending the event loop ------------ -void -ImpactParameterCalibration::endJob() { - - if(config.getParameter("writeToDB")) - { - edm::Service mydbservice; - if( !mydbservice.isAvailable() ) return; - if(minLoop == 0 ) mydbservice->createNewIOV(m_calibration[0], mydbservice->beginOfTime(), mydbservice->endOfTime(),"BTagTrackProbability3DRcd"); - if(maxLoop == 1) mydbservice->createNewIOV(m_calibration[1], mydbservice->beginOfTime(), mydbservice->endOfTime(),"BTagTrackProbability2DRcd"); - } - - - if(config.getParameter("writeToRootXML")) - { - if(maxLoop == 1 ){ - std::ofstream of2("2d.xml"); - TBufferXML b2(TBuffer::kWrite); - of2 << b2.ConvertToXML(static_cast(m_calibration[1]), - TClass::GetClass("TrackProbabilityCalibration"), - kTRUE, kFALSE); - of2.close(); - } - if(minLoop == 0 ){ - std::ofstream of3("3d.xml"); - TBufferXML b3(TBuffer::kWrite); - of3 << b3.ConvertToXML(static_cast(m_calibration[0]), - TClass::GetClass("TrackProbabilityCalibration"), - kTRUE, kFALSE); - of3.close(); - } - } - - - if(config.getParameter("writeToBinary")) - { - if(maxLoop == 1 ){ - - std::ofstream ofile("2d.dat"); - TBufferFile buffer(TBuffer::kWrite); - buffer.StreamObject(static_cast(m_calibration[1]), - TClass::GetClass("TrackProbabilityCalibration")); - Int_t size = buffer.Length(); - ofile.write(buffer.Buffer(),size); - ofile.close(); - } - if(minLoop == 0 ){ - std::ofstream ofile3("3d.dat"); - TBufferFile buffer3(TBuffer::kWrite); - buffer3.StreamObject(static_cast(m_calibration[0]), - TClass::GetClass("TrackProbabilityCalibration")); - Int_t size3 = buffer3.Length(); - ofile3.write(buffer3.Buffer(),size3); - ofile3.close(); - } - } - - - - - -} - -//define this as a plug-in -DEFINE_FWK_MODULE(ImpactParameterCalibration); diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/SumHistoCalibration.cc b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/SumHistoCalibration.cc deleted file mode 100644 index fcda69f61bd56..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/SumHistoCalibration.cc +++ /dev/null @@ -1,323 +0,0 @@ -// -*- C++ -*- -// -// Package: ImpactParameterCalibration -// Class: ImpactParameterCalibration -// -/**\class ImpactParameterCalibration ImpactParameterCalibration.cc RecoBTag/ImpactParameterCalibration/src/ImpactParameterCalibration.cc - - Description: - - Implementation: - -*/ -// -// Original Author: Jeremy Andrea -// Created: Wed Mar 5 19:17:38 CEST 2008 -// -// -// system include files - -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "Utilities/General/interface/FileInPath.h" - -#include "FWCore/Framework/interface/IOVSyncValue.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" - - -#include "DataFormats/BTauReco/interface/TrackIPTagInfo.h" -#include "CondFormats/BTauObjects/interface/TrackProbabilityCalibration.h" -#include "CondFormats/BTauObjects/interface/CalibratedHistogram.h" - -#include "CondFormats/DataRecord/interface/BTagTrackProbability2DRcd.h" -#include "CondFormats/DataRecord/interface/BTagTrackProbability3DRcd.h" - - -#include "RecoBTag/XMLCalibration/interface/AlgorithmCalibration.h" -#include "RecoBTag/XMLCalibration/interface/CalibratedHistogramXML.h" -#include "RecoBTag/TrackProbability/interface/TrackClassFilter.h" - -#include "CondFormats/BTauObjects/interface/TrackProbabilityCalibration.h" - - - -#include "RVersion.h" -#if ROOT_VERSION_CODE >= ROOT_VERSION(5,15,0) -#include "TBufferFile.h" -typedef TBufferFile MyTBuffer; -#else -#include "TBuffer.h" -typedef TBuffer MyTBuffer; -#endif - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "TrackClassMatch.h" - - -using namespace reco; -using namespace std; -// -// class decleration -// - - - -class SumHistoCalibration : public edm::EDAnalyzer { - public: - explicit SumHistoCalibration(const edm::ParameterSet&); - ~SumHistoCalibration(); - - - private: - virtual void beginJob() override ; - virtual void analyze(const edm::Event&, const edm::EventSetup&) override; - virtual void endJob() override ; - edm::ParameterSet config; - - TrackProbabilityCalibration * fromXml(const edm::FileInPath& xmlCalibration); - - - std::vector m_xmlilelist2d; - std::vector m_xmlilelist3d; - bool m_sum2D; - bool m_sum3D; - unsigned int minLoop, maxLoop; - TrackProbabilityCalibration * m_calibration[2]; - - - -}; - -SumHistoCalibration::SumHistoCalibration(const edm::ParameterSet& iConfig):config(iConfig) -{ - m_xmlilelist2d = iConfig.getParameter >("xmlfiles2d"); - m_xmlilelist3d = iConfig.getParameter >("xmlfiles3d"); - m_sum2D = iConfig.getParameter("sum2D"); - m_sum3D = iConfig.getParameter("sum3D"); -} - - -SumHistoCalibration::~SumHistoCalibration() -{ -} - - -void -SumHistoCalibration::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) -{ - using namespace edm; - using namespace reco; - using namespace std; - -} - - - - - - - - - - -// ------------ method called once each job just before starting event loop ------------ -void -SumHistoCalibration::beginJob() -{ - if(m_sum2D && m_sum3D){minLoop = 0; maxLoop =1;} - if(m_sum2D && !m_sum3D){minLoop = 0; maxLoop =0;} - if(!m_sum2D && m_sum3D){minLoop = 1; maxLoop =1;} - using namespace edm; - m_calibration[0] = new TrackProbabilityCalibration(); - m_calibration[1] = new TrackProbabilityCalibration(); - - const TrackProbabilityCalibration * ca[2]; - edm::FileInPath fip(m_xmlilelist3d[0]); - edm::FileInPath fip2(m_xmlilelist2d[0]); - ca[0] = fromXml(fip); - ca[1] = fromXml(fip2); - - for(unsigned int i=minLoop;i <=maxLoop ;i++) - for(unsigned int j=0;jdata.size() ; j++) - { - TrackProbabilityCalibration::Entry e; - e.category=ca[i]->data[j].category; - e.histogram=ca[i]->data[j].histogram; - m_calibration[i]->data.push_back(e); - } - - delete ca[0]; - delete ca[1]; - - - - - - - - - - - - - -} - -TrackProbabilityCalibration * SumHistoCalibration::fromXml(const edm::FileInPath& xmlCalibration) -{ - std::ifstream xmlFile(xmlCalibration.fullPath().c_str()); - if (!xmlFile.good()) - throw cms::Exception("BTauFakeMVAJetTagConditions") - << "File \"" << xmlCalibration.fullPath() - << "\" could not be opened for reading." - << std::endl; - std::ostringstream ss; - ss << xmlFile.rdbuf(); - xmlFile.close(); - TClass *classType = 0; - void *ptr = TBufferXML(TBuffer::kRead).ConvertFromXMLAny( - ss.str().c_str(), &classType, kTRUE, kFALSE); - if (!ptr) - throw cms::Exception("SumHistoCalibration") - << "Unknown error parsing XML serialization" - << std::endl; - - if (std::strcmp(classType->GetName(), - "TrackProbabilityCalibration")) { - classType->Destructor(ptr); - throw cms::Exception("SumHistoCalibration") - << "Serialized object has wrong C++ type." - << std::endl; - } - - return static_cast(ptr); -} - - - - -// ------------ method called once each job just after ending the event loop ------------ -void -SumHistoCalibration::endJob() { - - - using namespace edm; - using namespace reco; - using namespace std; - - - - - if(m_sum3D){ - for(unsigned int itFile =1; itFile< m_xmlilelist3d.size(); itFile++){ - edm::FileInPath fip(m_xmlilelist3d[itFile]); - const TrackProbabilityCalibration *ca = fromXml(fip); - for(unsigned int j=0;jdata.size() ; j++) - { - for(int k = 0; k< m_calibration[0]->data[j].histogram.numberOfBins(); k++){ - m_calibration[0]->data[j].histogram.setBinContent(k, ca->data[j].histogram.binContent(k) - + m_calibration[0]->data[j].histogram.binContent(k)); - } - } - delete ca; - } - } - if(m_sum2D){ - for(unsigned int itFile =1; itFile< m_xmlilelist2d.size(); itFile++){ - edm::FileInPath fip(m_xmlilelist2d[itFile]); - TrackProbabilityCalibration * ca = fromXml(fip); - for(unsigned int j=0;jdata.size() ; j++) - { - for(int k = 0; k< m_calibration[1]->data[j].histogram.numberOfBins(); k++){ - m_calibration[1]->data[j].histogram.setBinContent(k,ca->data[j].histogram.binContent(k) - + m_calibration[1]->data[j].histogram.binContent(k)); - } - } - delete ca; - } - } - - - - - - - - - - - - - - - if(config.getParameter("writeToDB")) - { - edm::Service mydbservice; - if( !mydbservice.isAvailable() ) return; - //mydbservice->createNewIOV(m_calibration[0], mydbservice->endOfTime(),"BTagTrackProbability3DRcd"); - //mydbservice->createNewIOV(m_calibration[1], mydbservice->endOfTime(),"BTagTrackProbability2DRcd"); - mydbservice->createNewIOV(m_calibration[0], mydbservice->beginOfTime(), mydbservice->endOfTime(),"BTagTrackProbability3DRcd"); - mydbservice->createNewIOV(m_calibration[1], mydbservice->beginOfTime(), mydbservice->endOfTime(),"BTagTrackProbability2DRcd"); - - } - - - if(config.getParameter("writeToRootXML")) - { - std::ofstream of2("2d.xml"); - TBufferXML b2(TBuffer::kWrite); - of2 << b2.ConvertToXML(static_cast(m_calibration[1]), - TClass::GetClass("TrackProbabilityCalibration"), - kTRUE, kFALSE); - of2.close(); - std::ofstream of3("3d.xml"); - TBufferXML b3(TBuffer::kWrite); - of3 << b3.ConvertToXML(static_cast(m_calibration[0]), - TClass::GetClass("TrackProbabilityCalibration"), - kTRUE, kFALSE); - of3.close(); - } - - - if(config.getParameter("writeToBinary")) - { - std::ofstream ofile("2d.dat"); - MyTBuffer buffer(TBuffer::kWrite); - buffer.StreamObject(const_cast(static_cast(m_calibration[1])), - TClass::GetClass("TrackProbabilityCalibration")); - Int_t size = buffer.Length(); - ofile.write(buffer.Buffer(),size); - ofile.close(); - - std::ofstream ofile3("3d.dat"); - MyTBuffer buffer3(TBuffer::kWrite); - buffer3.StreamObject(const_cast(static_cast(m_calibration[0])), - TClass::GetClass("TrackProbabilityCalibration")); - Int_t size3 = buffer3.Length(); - ofile3.write(buffer3.Buffer(),size3); - ofile3.close(); - } - - - - - -} - -//define this as a plug-in -DEFINE_FWK_MODULE(SumHistoCalibration); diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/TrackClassMatch.h b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/TrackClassMatch.h deleted file mode 100644 index 1d3b9c6e5c775..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/TrackClassMatch.h +++ /dev/null @@ -1,75 +0,0 @@ -#ifndef TrackClassMatch_H -#define TrackClassMatch_H - -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/VertexReco/interface/Vertex.h" -#include "DataFormats/JetReco/interface/Jet.h" -#include "CondFormats/BTauObjects/interface/TrackProbabilityCategoryData.h" -#include "CondFormats/BTauObjects/interface/TrackProbabilityCalibration.h" - - /** filter to define the belonging of a track to a TrackClass - */ -class TrackClassMatch -{ - public: - - TrackClassMatch() {} - - class Input - { - public: - Input(const reco::Track & t,const reco::Jet &j, const reco::Vertex & v) : - track(t), jet(j), vertex(v) {} - - const reco::Track & track; - const reco::Jet & jet; - const reco::Vertex & vertex; - }; - - typedef Input first_argument_type; - typedef TrackProbabilityCalibration::Entry second_argument_type; - typedef bool result_type; - - bool operator()(const first_argument_type & input , const second_argument_type & category ) const -{ - const reco::Track & track = input.track; -// const reco::Jet & jet = input.jet; -// const reco::Vertex & pv = input.vertex; - const TrackProbabilityCategoryData & d = category.category; - //Track Data - double p=track.p(); - double eta=track.eta(); - double nhit=track.numberOfValidHits(); - double npix=track.hitPattern().numberOfValidPixelHits(); - bool firstPixel=track.hitPattern().hasValidHitInFirstPixelBarrel(); - double chi=track.normalizedChi2(); - //Chi^2 cut if used - bool chicut=(chi >= d.chiMin && chi < d.chiMax ); - if(d.chiMin<=0.01 && d.chiMax<=0.01) chicut=true; - - //First Pixel Hit cut 1=there should be an hit in first layer, -1=there should not be an hit, 0 = I do not care - bool fisrtPixelCut = ( (firstPixel && d.withFirstPixel == 1) || (!firstPixel && d.withFirstPixel == -1) || d.withFirstPixel == 0 ); - - //the AND of everything - bool result=( p > d.pMin && p < d.pMax && - fabs(eta) > d.etaMin && fabs(eta) < d.etaMax && - nhit >= d.nHitsMin && nhit <= d.nHitsMax && - npix >= d.nPixelHitsMin && npix <= d.nPixelHitsMax && - chicut && fisrtPixelCut ); - return result; - } - - - -}; - - -#endif - - - - - - - - diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/TrackProbabilityXMLtoDB.cc b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/TrackProbabilityXMLtoDB.cc deleted file mode 100644 index 43698e997c6cf..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/plugins/TrackProbabilityXMLtoDB.cc +++ /dev/null @@ -1,160 +0,0 @@ -// -*- C++ -*- -// -// Package: TrackProbabilityXMLtoDB -// Class: TrackProbabilityXMLtoDB -// -/**\class TrackProbabilityXMLtoDB TrackProbabilityXMLtoDB.cc RecoBTag/TrackProbabilityXMLtoDB/src/TrackProbabilityXMLtoDB.cc - - Description: - - Implementation: - -*/ -// -// Original Author: Andrea Rizzi -// Created: Wed Apr 12 11:12:49 CEST 2006 -// -// - - - - -// system include files -#include -#include -#include -using namespace std; - -// user include files -#include "FWCore/Framework/interface/Frameworkfwd.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/MakerMacros.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" - -#include "DataFormats/Math/interface/Vector3D.h" -#include "DataFormats/Common/interface/Ref.h" -#include "DataFormats/JetReco/interface/Jet.h" -#include "DataFormats/JetReco/interface/CaloJet.h" -#include "DataFormats/TrackReco/interface/Track.h" -#include "DataFormats/BTauReco/interface/JetTracksAssociation.h" - -//#include "RecoBTag/TrackProbability/interface/TrackClassFilterCategory.h" - -#include "TrackingTools/Records/interface/TransientTrackRecord.h" -#include "TrackingTools/TransientTrack/interface/TransientTrackBuilder.h" -//#include "TrackProbabilityCalibratedHistogram.h" - -#include "RecoBTag/BTagTools/interface/SignedTransverseImpactParameter.h" -#include "RecoBTag/BTagTools/interface/SignedImpactParameter3D.h" -#include "RecoBTag/BTagTools/interface/SignedDecayLength3D.h" - -//CondFormats -#include "CondFormats/BTauObjects/interface/TrackProbabilityCalibration.h" - -#include "FWCore/Framework/interface/IOVSyncValue.h" -#include "FWCore/ServiceRegistry/interface/Service.h" -#include "CondCore/DBOutputService/interface/PoolDBOutputService.h" -// Math -#include "Math/GenVector/VectorUtil.h" -#include "Math/GenVector/PxPyPzE4D.h" - -#include "RecoBTag/XMLCalibration/interface/AlgorithmCalibration.h" -#include "RecoBTag/XMLCalibration/interface/CalibratedHistogramXML.h" -#include "RecoBTag/TrackProbability/interface/TrackClassFilterCategory.h" - -//#include "TH1F.h" -//#include "TFile.h" - - -#include -#include - -using namespace reco; - -// -// class decleration -// - -class TrackProbabilityXMLtoDB : public edm::EDAnalyzer { - public: - explicit TrackProbabilityXMLtoDB(const edm::ParameterSet&); - - virtual void endJob() - { - edm::Service mydbservice; - if( !mydbservice.isAvailable() ) return; - - edm::FileInPath f2d("RecoBTag/TrackProbability/data/2DHisto.xml"); - edm::FileInPath f3d("RecoBTag/TrackProbability/data/3DHisto.xml"); - AlgorithmCalibration* calibrationOld= new AlgorithmCalibration((f3d.fullPath()).c_str()); - AlgorithmCalibration* calibration2dOld= new AlgorithmCalibration((f2d.fullPath()).c_str()); - - vector > data = calibrationOld->categoriesWithData(); - vector > data2d = calibration2dOld->categoriesWithData(); - TrackProbabilityCalibration * calibration= new TrackProbabilityCalibration(); - TrackProbabilityCalibration * calibration2d= new TrackProbabilityCalibration(); - for(int i = 0 ; i < data.size();i++) - { - TrackProbabilityCalibration::Entry entry; - entry.category=data[i].first.categoryData(); - entry.histogram=data[i].second; - calibration->data.push_back(entry); - } - for(int i = 0 ; i < data2d.size();i++) - { - TrackProbabilityCalibration::Entry entry; - entry.category=data2d[i].first.categoryData(); - entry.histogram=data2d[i].second; - calibration2d->data.push_back(entry); - } - - - mydbservice->createNewIOV(calibration, mydbservice->endOfTime(),"BTagTrackProbability3DRcd"); - - mydbservice->createNewIOV(calibration2d, mydbservice->endOfTime(),"BTagTrackProbability2DRcd"); - - - } - ~TrackProbabilityXMLtoDB() - { - } - - - - virtual void analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup); - - private: - int count; -int ntracks; - int m_cutPixelHits; - int m_cutTotalHits; - double m_cutMaxTIP; - double m_cutMinPt; - double m_cutMaxDecayLen; - double m_cutMaxChiSquared; - double m_cutMaxLIP; - double m_cutMaxDistToAxis; - double m_cutMinProb; - - edm::InputTag m_assoc; - edm::InputTag m_jets; - edm::InputTag m_primaryVertexProducer; -}; - -// -// constructors and destructor -// -TrackProbabilityXMLtoDB::TrackProbabilityXMLtoDB(const edm::ParameterSet& parameters) -{ -} - -void -TrackProbabilityXMLtoDB::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) -{ -} - -//define this as a plug-in - -DEFINE_FWK_MODULE(TrackProbabilityXMLtoDB); diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/2d.xml.new.gz b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/2d.xml.new.gz deleted file mode 100644 index 00fa657be6bb6b6f448580b2f99eff3367070387..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25482 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 diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/3d.xml.new.gz b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/3d.xml.new.gz deleted file mode 100644 index 92f967de388d0e16ab1b9c386f6c6d2e9134cb58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35359 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 VLCfz~mWNmPja#!e#Ye)w`w!jb(@OvV diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/XMLtoBuffer-blob_cfg.py b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/XMLtoBuffer-blob_cfg.py deleted file mode 100644 index a9d00807fe269..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/XMLtoBuffer-blob_cfg.py +++ /dev/null @@ -1,64 +0,0 @@ -# The following comments couldn't be translated into the new config version: - -#include "CondCore/DBCommon/data/CondDBCommon.cfi" -#replace CondDBCommon.connect = "sqlite_file:btagnew.db" -#replace CondDBCommon.catalog = "file:mycatalog.xml" -# es_source = PoolDBESSource { -# using CondDBCommon -# VPSet toGet = { -# {string record = "BTagTrackProbability2DRcd" -# string tag = "probBTagPDF2D_tag" }, -# {string record = "BTagTrackProbability3DRcd" -# string tag = "probBTagPDF3D_tag" } -# } -# } - -import FWCore.ParameterSet.Config as cms - -process = cms.Process("analyzer") -#include "Configuration/StandardSequences/data/FakeConditions.cff" -#untracked PSet maxEvents = {untracked int32 input = 100} -# Message Logger -process.load("FWCore.MessageLogger.MessageLogger_cfi") - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(0) -) -process.source = cms.Source("EmptySource", - firstRun = cms.untracked.uint32(1) -) - -process.ipCalib = cms.EDAnalyzer("ImpactParameterCalibration", - writeToDB = cms.bool(True), - writeToBinary = cms.bool(False), - calibFile3d = cms.FileInPath('RecoBTag/ImpactParameterLearning/test/3d.xml.new'), - resetHistograms = cms.bool(False), - maxSignificance = cms.double(50.0), - writeToRootXML = cms.bool(False), - nBins = cms.int32(10000), - tagInfoSrc = cms.InputTag("impactParameterTagInfos"), - calibFile2d = cms.FileInPath('RecoBTag/ImpactParameterLearning/test/2d.xml.new'), - inputCategories = cms.string('RootXML'), - primaryVertexSrc = cms.InputTag("offlinePrimaryVerticesFromCTFTracks") -) - -process.PoolDBOutputService = cms.Service("PoolDBOutputService", - BlobStreamerName = cms.untracked.string('TBufferBlobStreamingService'), - DBParameters = cms.PSet( - messageLevel = cms.untracked.int32(0), - authenticationPath = cms.untracked.string('.') - ), - timetype = cms.untracked.string('runnumber'), - connect = cms.string('sqlite_file:btagnew_new.db'), - toPut = cms.VPSet(cms.PSet( - record = cms.string('BTagTrackProbability2DRcd'), - tag = cms.string('probBTagPDF2D_tag_mc') - ), - cms.PSet( - record = cms.string('BTagTrackProbability3DRcd'), - tag = cms.string('probBTagPDF3D_tag_mc') - )) -) - -process.p = cms.Path(process.ipCalib) - diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/XMLtoBuffer_cfg.py b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/XMLtoBuffer_cfg.py deleted file mode 100644 index 59cef38d66432..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/XMLtoBuffer_cfg.py +++ /dev/null @@ -1,66 +0,0 @@ -# The following comments couldn't be translated into the new config version: - -#include "CondCore/DBCommon/data/CondDBCommon.cfi" -#replace CondDBCommon.connect = "sqlite_file:btagnew.db" -#replace CondDBCommon.catalog = "file:mycatalog.xml" -# es_source = PoolDBESSource { -# using CondDBCommon -# VPSet toGet = { -# {string record = "BTagTrackProbability2DRcd" -# string tag = "probBTagPDF2D_tag" }, -# {string record = "BTagTrackProbability3DRcd" -# string tag = "probBTagPDF3D_tag" } -# } -# } - -import FWCore.ParameterSet.Config as cms - -process = cms.Process("analyzer") -#include "Configuration/StandardSequences/data/FakeConditions.cff" -#untracked PSet maxEvents = {untracked int32 input = 100} -# Message Logger -process.load("FWCore.MessageLogger.MessageLogger_cfi") - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(0) -) -process.source = cms.Source("EmptySource", - firstRun = cms.untracked.uint32(1) -) - -process.ipCalib = cms.EDAnalyzer("ImpactParameterCalibration", - writeToDB = cms.bool(True), - writeToBinary = cms.bool(False), - calibFile3d = cms.FileInPath('RecoBTag/ImpactParameterLearning/test/3d.xml.new'), - resetHistograms = cms.bool(False), - maxSignificance = cms.double(50.0), - writeToRootXML = cms.bool(False), - nBins = cms.int32(10000), - tagInfoSrc = cms.InputTag("impactParameterTagInfos"), - calibFile2d = cms.FileInPath('RecoBTag/ImpactParameterLearning/test/2d.xml.new'), - inputCategories = cms.string('RootXML'), - primaryVertexSrc = cms.InputTag("offlinePrimaryVerticesFromCTFTracks") -) - -process.PoolDBOutputService = cms.Service("PoolDBOutputService", - authenticationMethod = cms.untracked.uint32(1), - loadBlobStreamer = cms.untracked.bool(True), - catalog = cms.untracked.string('file:mycatalog_new.xml'), - DBParameters = cms.PSet( - messageLevel = cms.untracked.int32(0), - authenticationPath = cms.untracked.string('.') - ), - timetype = cms.untracked.string('runnumber'), - connect = cms.string('sqlite_file:btagnew_new.db'), - toPut = cms.VPSet(cms.PSet( - record = cms.string('BTagTrackProbability2DRcd'), - tag = cms.string('probBTagPDF2D_tag_mc') - ), - cms.PSet( - record = cms.string('BTagTrackProbability3DRcd'), - tag = cms.string('probBTagPDF3D_tag_mc') - )) -) - -process.p = cms.Path(process.ipCalib) - diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/btagAnalysis.cfg b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/btagAnalysis.cfg deleted file mode 100644 index dd7d55bc0412f..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/btagAnalysis.cfg +++ /dev/null @@ -1,118 +0,0 @@ -process btagtest = { - ### keep the logging output to a nice level ### - #include "FWCore/MessageService/data/MessageLogger.cfi" - #replace MessageLogger.cerr.threshold = "INFO" - # initialize MessageLogger - #include "RecoTracker/RoadSearchCloudMaker/test/messages.cfg" - - source = PoolSource { - untracked vstring fileNames = { - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_1.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_10.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_11.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_12.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_14.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_15.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_16.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_17.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_18.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_19.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_2.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_20.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_21.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_22.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_24.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_25.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_26.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_27.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_28.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_29.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_3.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_30.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_4.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_5.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_6.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_7.root", - "rfio:/dpm/in2p3.fr/home/cms/jandrea/QCDFastSimAOD_184_80_120/QCDFastSimAOD_184_80_120_9.root" - - - } - } - untracked PSet maxEvents = {untracked int32 input = 10000} - - - - // include "CalibTracker/Configuration/data/SiStrip_FakePedestals.cff" - //include "CalibTracker/Configuration/data/SiStrip_FakeLorentzAngle.cff" - - //include "RecoTracker/CkfPattern/data/CkfTrajectoryBuilderESProducer.cfi" - - //include "RecoTracker/Configuration/data/RecoTracker.cff" - //replace ctfWithMaterialTracks.TrajectoryInEvent = true - - - - - - include "TrackingTools/TransientTrack/data/TransientTrackBuilder.cfi" - - include "Geometry/CMSCommonData/data/cmsIdealGeometryXML.cfi" - - - - - - - // include "PhysicsTools/JetMCAlgos/data/CaloJetsMCFlavour.cfi" - //sequence mcJetFlavour = { myPartons, iterativeCone5Flavour } - - - - - - #include "RecoBTag/Configuration/data/RecoBTag.cff" - #include "RecoBTag/Analysis/data/bTagTrackProbabilityAnalysis.cff" - #replace bTagTrackProbabilityAnalysis.rootfile = "qcdTP_152Calib152.root" - #replace bTagTrackProbabilityAnalysis.jetTagModuleLabel = {"jetProbabilityJetTags"} - #replace bTagTrackProbabilityAnalysis.tagInfo = TrackIP - - - #include "RecoBTau/JetTagProducer/data/jetTagRecord.cfi" - - #include "RecoBTag/TrackProbability/data/jetProbabilityComputer.cfi" - #include "RecoBTag/ImpactParameter/data/impactParameter.cfi" - - include "RecoBTag/Configuration/data/RecoBTag.cff" - include "RecoBTag/TrackProbability/data/trackProbabilityFakeCond.cfi" - - - include "RecoBTag/Analysis/data/bTagAnalysis.cfi" - replace bTagAnalysis.producePs = false - replace bTagAnalysis.fastMC = true - replace bTagAnalysis.jetMCSrc = mcAlgoJetFlavour - - include "RecoBTag/MCTools/data/mcAlgoJetFlavour.cfi" - - - # module mcJetFlavour = MCJetFlavour - # { -# InputTag jets = iterativeCone5CaloJets -# PSet jetFlavourIdentifier = { -# string mcSource = "source" -# bool fillPartons = true -# bool fillHeavyHadrons = false -# bool fillLeptons = false -# double coneSizeToAssociate = 0.3 -# bool physicsDefinition = false -# bool rejectBCSplitting = false -# vstring vetoFlavour = { } -# } -# } - - - #path p = { bTagTrackProbabilityAnalysis} - path p = { mcAlgoJetFlavour, impactParameterTagInfos,jetProbabilityBJetTags,bTagAnalysis } - #bTagTrackCountingAnalysis } - #endpath e = {out} - -} diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/calib_cfg.py b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/calib_cfg.py deleted file mode 100644 index 5595facc4243b..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/calib_cfg.py +++ /dev/null @@ -1,97 +0,0 @@ -# The following comments couldn't be translated into the new config version: - -#! /bin/env cmsRun - -#include "CondCore/DBCommon/data/CondDBCommon.cfi" -#replace CondDBCommon.connect = "sqlite_file:btagnew.db" -#replace CondDBCommon.catalog = "file:mycatalog.xml" -# es_source = PoolDBESSource { -# using CondDBCommon -# VPSet toGet = { -# {string record = "BTagTrackProbability2DRcd" -# string tag = "probBTagPDF2D_tag" }, -# {string record = "BTagTrackProbability3DRcd" -# string tag = "probBTagPDF3D_tag" } -# } -# } - -import FWCore.ParameterSet.Config as cms - -process = cms.Process("analyzer") -# source = EmptySource {untracked uint32 firstRun=1 } -#untracked PSet maxEvents = {untracked int32 input = 100} -# Message Logger -process.load("FWCore.MessageLogger.MessageLogger_cfi") - -process.load("DQMServices.Components.DQMEnvironment_cfi") -process.load("DQMServices.Core.DQM_cfg") - -process.load("RecoBTag.Configuration.RecoBTag_cff") - -process.load("Validation.RecoB.bTagAnalysis_cfi") -process.load("PhysicsTools.JetMCAlgos.CaloJetsMCFlavour_cfi") -process.bTagValidation.jetMCSrc = 'AK5byValAlgo' -process.bTagValidation.allHistograms = True - - - - -process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(10000) ) - -#process.load("RecoBTag.TrackProbability.trackProbabilityFakeCond_cfi") -#process.trackProbabilityFakeCond.connect = "sqlite_fip:RecoBTag/ImpactParameterLearning/test/btagnew_test_startup.db" - -process.source = cms.Source("PoolSource", - fileNames = cms.untracked.vstring( - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/F6DE1DAA-ED4E-DE11-8A9B-001D09F25325.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/F05D9103-524F-DE11-96EB-001D09F2AD4D.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/F01E8CB2-F14E-DE11-B2EF-001D09F2A465.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/D2AB5809-F14E-DE11-B36C-001D09F24024.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/880B0814-EA4E-DE11-8BB4-001D09F276CF.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/1C221D94-F04E-DE11-A9ED-001D09F23944.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/F01E9FFE-5F4F-DE11-97D5-003048678FE4.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/8844A4D8-734E-DE11-9208-001731AF6859.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/720A062B-794E-DE11-9E6C-003048767ED5.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/407B954B-764E-DE11-86B9-003048678B44.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/089C14CE-814E-DE11-91EC-003048678B0E.root' - - - ) -) - -process.ipCalib = cms.EDAnalyzer("ImpactParameterCalibration", - writeToDB = cms.bool(False), - writeToBinary = cms.bool(False), - nBins = cms.int32(10000), - maxSignificance = cms.double(50.0), - writeToRootXML = cms.bool(True), - tagInfoSrc = cms.InputTag("impactParameterTagInfos"), - inputCategories = cms.string('HardCoded'), - primaryVertexSrc = cms.InputTag("offlinePrimaryVertices") -) - -process.PoolDBOutputService = cms.Service("PoolDBOutputService", - authenticationMethod = cms.untracked.uint32(1), - loadBlobStreamer = cms.untracked.bool(True), - catalog = cms.untracked.string('file:mycatalog_new.xml'), - DBParameters = cms.PSet( - messageLevel = cms.untracked.int32(0), - authenticationPath = cms.untracked.string('.') - ), - timetype = cms.untracked.string('runnumber'), - connect = cms.string('sqlite_file:btagnew_new.db'), - toPut = cms.VPSet(cms.PSet( - record = cms.string('BTagTrackProbability2DRcd'), - tag = cms.string('probBTagPDF2D_tag') - ), - cms.PSet( - record = cms.string('BTagTrackProbability3DRcd'), - tag = cms.string('probBTagPDF3D_tag') - )) -) - -process.p = cms.Path(process.myPartons* process.iterativeCone5Flavour * process.bTagValidation*process.dqmSaver*process.ipCalib) -process.dqmEnv.subSystemFolder = 'BTAG' -process.dqmSaver.producer = 'DQM' -process.dqmSaver.workflow = '/POG/BTAG/BJET' -process.dqmSaver.convention = 'RelVal' diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/eventsetuptoXML_cfg.py b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/eventsetuptoXML_cfg.py deleted file mode 100644 index c368223d664b4..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/eventsetuptoXML_cfg.py +++ /dev/null @@ -1,67 +0,0 @@ - -import FWCore.ParameterSet.Config as cms - -process = cms.Process("analyzer") -# -# one of the three -# - -# 1 - frontier -# -#process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cfi") -#process.GlobalTag.globaltag = "IDEAL_V5::All" - -# 2 - fake -# -process.load("RecoBTag.TrackProbability.trackProbabilityFakeCond_cfi") - - -# 3 - file --- edit the file position -# -#process.load("RecoBTag.TrackProbability.trackProbabilityFakeCond_cfi") -#process.trackProbabilityFakeCond.connect = "sqlite_fip:RecoBTag/ImpactParameterLearning/test/btagnew_new.db" - -# Message Logger -process.load("FWCore.MessageLogger.MessageLogger_cfi") - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(0) -) -process.source = cms.Source("EmptySource", - firstRun = cms.untracked.uint32(1) -) - -process.ipCalib = cms.EDAnalyzer("ImpactParameterCalibration", - writeToDB = cms.bool(True), - writeToBinary = cms.bool(False), - nBins = cms.int32(10000), - resetHistograms = cms.bool(False), - maxSignificance = cms.double(50.0), - writeToRootXML = cms.bool(True), - tagInfoSrc = cms.InputTag("impactParameterTagInfos"), - inputCategories = cms.string('EventSetup'), - primaryVertexSrc = cms.InputTag("offlinePrimaryVerticesFromCTFTracks") -) - -process.PoolDBOutputService = cms.Service("PoolDBOutputService", - authenticationMethod = cms.untracked.uint32(1), - loadBlobStreamer = cms.untracked.bool(True), - catalog = cms.untracked.string('file:mycatalog_new.xml'), - DBParameters = cms.PSet( - messageLevel = cms.untracked.int32(0), - authenticationPath = cms.untracked.string('.') - ), - timetype = cms.untracked.string('runnumber'), - connect = cms.string('sqlite_file:btagnew_new.db'), - toPut = cms.VPSet(cms.PSet( - record = cms.string('BTagTrackProbability2DRcd'), - tag = cms.string('probBTagPDF2D_tag_mc') - ), - cms.PSet( - record = cms.string('BTagTrackProbability3DRcd'), - tag = cms.string('probBTagPDF3D_tag_mc') - )) -) - -process.p = cms.Path(process.ipCalib) - diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/histoMaker.py b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/histoMaker.py deleted file mode 100644 index f36d0d5b9b3df..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/histoMaker.py +++ /dev/null @@ -1,78 +0,0 @@ -# The following comments couldn't be translated into the new config version: - -#! /bin/env cmsRun - -#include "CondCore/DBCommon/data/CondDBCommon.cfi" -#replace CondDBCommon.connect = "sqlite_file:btagnew.db" -#replace CondDBCommon.catalog = "file:mycatalog.xml" -# es_source = PoolDBESSource { -# using CondDBCommon -# VPSet toGet = { -# {string record = "BTagTrackProbability2DRcd" -# string tag = "probBTagPDF2D_tag" }, -# {string record = "BTagTrackProbability3DRcd" -# string tag = "probBTagPDF3D_tag" } -# } -# } - -import FWCore.ParameterSet.Config as cms - -from RecoBTag.ImpactParameter.impactParameter_cff import * - - -process = cms.Process("analyzer") -# source = EmptySource {untracked uint32 firstRun=1 } -#untracked PSet maxEvents = {untracked int32 input = 100} -# Message Logger -process.load("FWCore.MessageLogger.MessageLogger_cfi") - -process.load("DQMServices.Components.DQMEnvironment_cfi") -process.load("DQMServices.Core.DQM_cfg") - -process.load("Configuration.StandardSequences.Reconstruction_cff") -process.load("RecoBTag.Configuration.RecoBTag_cff") - -process.load("Validation.RecoB.bTagAnalysis_cfi") -process.load("PhysicsTools.JetMCAlgos.CaloJetsMCFlavour_cfi") -process.bTagValidation.jetMCSrc = 'AK5byValAlgo' -process.bTagValidation.allHistograms = True - -process.load("TrackingTools/TransientTrack/TransientTrackBuilder_cfi") -process.load('Configuration/StandardSequences/GeometryIdeal_cff') -process.load('Configuration/StandardSequences/FrontierConditions_GlobalTag_cff') -process.load("Configuration.StandardSequences.MagneticField_38T_cff") - -#from CondCore.DBCommon.CondDBCommon_cfi import * -#process.load("RecoBTag.TrackProbability.trackProbabilityFakeCond_cfi") -#process.trackProbabilityFakeCond.connect = "sqlite_fip:btagnew_test_startup.db" -#process.es_prefer_trackProbabilityFakeCond = cms.ESPrefer("PoolDBESSource","trackProbabilityFakeCond") - - -process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(1000) ) - - -process.source = cms.Source("PoolSource", - fileNames = cms.untracked.vstring( - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/F6DE1DAA-ED4E-DE11-8A9B-001D09F25325.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/F05D9103-524F-DE11-96EB-001D09F2AD4D.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/F01E8CB2-F14E-DE11-B2EF-001D09F2A465.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/D2AB5809-F14E-DE11-B36C-001D09F24024.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/880B0814-EA4E-DE11-8BB4-001D09F276CF.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0007/1C221D94-F04E-DE11-A9ED-001D09F23944.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/F01E9FFE-5F4F-DE11-97D5-003048678FE4.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/8844A4D8-734E-DE11-9208-001731AF6859.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/720A062B-794E-DE11-9E6C-003048767ED5.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/407B954B-764E-DE11-86B9-003048678B44.root', - '/store/relval/CMSSW_3_1_0_pre9/RelValQCD_Pt_80_120/GEN-SIM-RECO/STARTUP_31X_v1/0000/089C14CE-814E-DE11-91EC-003048678B0E.root' - - - ) -) - - -process.p = cms.Path(process.myPartons* process.iterativeCone5Flavour *process.impactParameterTagInfos - *process.jetProbabilityBJetTags*process.jetBProbabilityBJetTags*process.bTagValidation*process.dqmSaver) -process.dqmEnv.subSystemFolder = 'BTAG' -process.dqmSaver.producer = 'DQM' -process.dqmSaver.workflow = '/POG/BTAG/BJET' -process.dqmSaver.convention = 'RelVal' diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/produceXMLFiles.cfg b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/produceXMLFiles.cfg deleted file mode 100755 index f4b945b8a390c..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/produceXMLFiles.cfg +++ /dev/null @@ -1,81 +0,0 @@ -#! /bin/env cmsRun - -process analyzer = { - - untracked PSet maxEvents = {untracked int32 input = 10} - - - - source = PoolSource { - untracked vstring fileNames = { - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/0228BB4B-220A-DD11-A96A-001617C3B76E.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/022F834B-260A-DD11-BA52-001617C3B79A.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/04373ACD-240A-DD11-9444-000423D99394.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/04552009-260A-DD11-87B2-0030485610BC.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/047198F7-250A-DD11-9E5D-000423D6C8E6.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/067E017E-220A-DD11-A778-000423D98AF0.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/080EFDCA-240A-DD11-AB92-000423D94494.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/08791D18-240A-DD11-BFC2-000E0C3F0896.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/0C62CBCD-230A-DD11-B856-000423D98E54.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/0C9F238D-240A-DD11-A501-000423D99660.root', - '/store/Generators/2008/4/13/FastSim-QCD_250_500-madgraph-1208074320/0001/0CDB77AB-250A-DD11-8383-001617E30D38.root' - } - } - - - - - include "Configuration/StandardSequences/data/FakeConditions.cff" - - #untracked PSet maxEvents = {untracked int32 input = 100} - - # Message Logger - include "FWCore/MessageLogger/data/MessageLogger.cfi" - # replace MessageLogger.cout.threshold = "INFO" - - # Test tracks to jets association - module ipCalib = ImpactParameterCalibration { - bool resetHistograms = false - bool writeToDB = false - bool writeToRootXML = true - bool writeToBinary = false - InputTag tagInfoSrc = impactParameterTagInfos - InputTag primaryVertexSrc = offlinePrimaryVerticesFromCTFTracks - string inputCategories = "HardCoded" - FileInPath calibFile3d = "RecoBTag/ImpactParameterLearning/test/3d.xml.new" - FileInPath calibFile2d = "RecoBTag/ImpactParameterLearning/test/2d.xml.new" - int32 nBins = 10000 - double maxSignificance = 50. - - } - - - - service = PoolDBOutputService - { - string connect = "sqlite_file:btagnew_new.db" - string timetype = "runnumber" - untracked uint32 authenticationMethod = 1 - untracked string catalog = "file:mycatalog_new.xml" - untracked bool loadBlobStreamer = true - VPSet toPut= - { - { - string record = "BTagTrackProbability2DRcd" - string tag ="probBTagPDF2D_tag" - }, - { - string record = "BTagTrackProbability3DRcd" - string tag ="probBTagPDF3D_tag" - } - } - PSet DBParameters = { - untracked string authenticationPath="." - untracked int32 messageLevel=0 - } - } - - # module execution - path p = { ipCalib } - -} diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLFiles.cfg b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLFiles.cfg deleted file mode 100644 index 0afc54534da37..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLFiles.cfg +++ /dev/null @@ -1,53 +0,0 @@ -process analyzer = { - - untracked PSet maxEvents = {untracked int32 input = 0} - - source = EmptySource {untracked uint32 firstRun=1 } - #include "RecoLocalMuon/DTRecHit/data/DTParametrizedDriftAlgo_CSA07.cfi" - #include "Configuration/StandardSequences/data/FakeConditions.cff" - - - - - #untracked PSet maxEvents = {untracked int32 input = 100} - - # Message Logger - include "FWCore/MessageLogger/data/MessageLogger.cfi" - # replace MessageLogger.cout.threshold = "INFO" - - # Test tracks to jets association - module sumCalib = SumHistoCalibration{ - vstring xmlfiles2d = {"XMLs/2d_16.xml", "XMLs/2d_18.xml", "XMLs/2d_19.xml", "XMLs/2d_1.xml", "XMLs/2d_24.xml", "XMLs/2d_25.xml", "XMLs/2d_26.xml", "XMLs/2d_27.xml", "XMLs/2d_28.xml", "XMLs/2d_29.xml", "XMLs/2d_2.xml", "XMLs/2d_3.xml", "XMLs/2d_4.xml", "XMLs/2d_5.xml", "XMLs/2d_6.xml", "XMLs/2d_8.xml", "XMLs/2d_9.xml"} - vstring xmlfiles3d = {"XMLs/3d_16.xml", "XMLs/3d_18.xml", "XMLs/3d_19.xml", "XMLs/3d_1.xml", "XMLs/3d_24.xml", "XMLs/3d_25.xml", "XMLs/3d_26.xml", "XMLs/3d_27.xml", "XMLs/3d_28.xml", "XMLs/3d_29.xml", "XMLs/3d_2.xml", "XMLs/3d_3.xml", "XMLs/3d_4.xml", "XMLs/3d_5.xml", "XMLs/3d_6.xml", "XMLs/3d_8.xml", "XMLs/3d_9.xml"} - bool sum2D = true - bool sum3D = true - - bool writeToDB = false - bool writeToRootXML = true - bool writeToBinary = false - - } - - - - - - - - - - - - - - - - - - - - - # module execution - path p = { sumCalib } - -} diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLs.cfg b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLs.cfg deleted file mode 100755 index b7fd024a60fd3..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLs.cfg +++ /dev/null @@ -1,38 +0,0 @@ -#! /bin/env cmsRun - -process analyzer = { - - untracked PSet maxEvents = {untracked int32 input = 0} - - source = EmptySource {untracked uint32 firstRun=1 } -include "RecoLocalMuon/DTRecHit/data/DTParametrizedDriftAlgo_CSA07.cfi" -include "Configuration/StandardSequences/data/FakeConditions.cff" - - - - -#untracked PSet maxEvents = {untracked int32 input = 100} - - # Message Logger - include "FWCore/MessageLogger/data/MessageLogger.cfi" -# replace MessageLogger.cout.threshold = "INFO" - - # Test tracks to jets association - module sumCalib = SumHistoCalibration{ - vstring xmlfiles2d = {"RecoBTag/ImpactParameterLearning/test/22d.xml", "RecoBTag/ImpactParameterLearning/test/21d.xml"} - vstring xmlfiles3d = {"RecoBTag/ImpactParameterLearning/test/32d.xml", "RecoBTag/ImpactParameterLearning/test/31d.xml"} - bool sum2D = true - bool sum3D = true - - bool writeToDB = false - bool writeToRootXML = true - bool writeToBinary = false - - } - - - - # module execution - path p = { sumCalib } - -} diff --git a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLs.cfg.py b/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLs.cfg.py deleted file mode 100644 index 21ad3c55060d7..0000000000000 --- a/branches/gem-CR-stand/RecoBTag/ImpactParameterLearning/test/sumXMLs.cfg.py +++ /dev/null @@ -1,44 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -process = cms.Process("sumXMLs") -process.load("FWCore.MessageLogger.MessageLogger_cfi") - -process.source = cms.Source("EmptySource") - -process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(1) -) -process.sumCalib = cms.EDFilter("SumHistoCalibration", - - xmlfiles2d = cms.vstring("RecoBTag/ImpactParameterLearning/test/2d.xml.new","RecoBTag/ImpactParameterLearning/test/2d.xml.new"), - xmlfiles3d = cms.vstring("RecoBTag/ImpactParameterLearning/test/3d.xml.new","RecoBTag/ImpactParameterLearning/test/3d.xml.new"), - sum2D = cms.bool(True), - sum3D = cms.bool(True), - writeToDB = cms.bool(False), - writeToRootXML = cms.bool(True), - writeToBinary = cms.bool(False) -) - - - -process.PoolDBOutputService = cms.Service("PoolDBOutputService", - authenticationMethod = cms.untracked.uint32(1), - loadBlobStreamer = cms.untracked.bool(True), - catalog = cms.untracked.string('file:mycatalog_new.xml'), - DBParameters = cms.PSet( - messageLevel = cms.untracked.int32(0), - authenticationPath = cms.untracked.string('.') - ), - timetype = cms.untracked.string('runnumber'), - connect = cms.string('sqlite_file:btagnew_test_startup.db'), - toPut = cms.VPSet(cms.PSet( - record = cms.string('BTagTrackProbability2DRcd'), - tag = cms.string('probBTagPDF2D_tag_mc') - ), - cms.PSet( - record = cms.string('BTagTrackProbability3DRcd'), - tag = cms.string('probBTagPDF3D_tag_mc') - )) -) - -process.p = cms.Path(process.sumCalib) diff --git a/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/BuildFile.xml b/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/BuildFile.xml deleted file mode 100644 index ae8f6fd83758a..0000000000000 --- a/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/BuildFile.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - - - - - - - - diff --git a/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/EventProgress.cc b/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/EventProgress.cc deleted file mode 100644 index 77312154fdbf4..0000000000000 --- a/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/EventProgress.cc +++ /dev/null @@ -1,57 +0,0 @@ -#include - -#include -#include -#include -#include - -#include "EventProgress.h" - -EventProgress::EventProgress() : - nEvents(0), startTime(time(NULL)), lastUpdate(0), displayWidth(0) -{ -} - -EventProgress::EventProgress(unsigned long _nEvents) : - nEvents(_nEvents), startTime(time(NULL)), lastUpdate(0), - displayWidth(int(std::log(nEvents + 0.5) / M_LN10 + 1)) -{ -} - -EventProgress::~EventProgress() -{ - std::cout << " \r" << std::flush; -} - -void EventProgress::update(unsigned long event) -{ - time_t currentTime = time(0); - if (currentTime == lastUpdate) - return; - - lastUpdate = currentTime; - - if (displayWidth) - std::cout << "Event " << std::setw(displayWidth) << event; - else - std::cout << "Event " << event; - - if (nEvents) { - unsigned long eta = (event >= 10) ? ((currentTime - startTime) * (nEvents - event) / event) - : std::numeric_limits::max(); - - std::cout << " (" << std::setw(2) << (event * 100 / nEvents) << "%), ETA "; - if (eta >= 6000) - std::cout << "##:##\r"; - else - std::cout << std::setw(2) << (eta / 60) << ":" - << std::setfill('0') << std::setw(2) << (eta % 60); - } - - std::cout << std::setfill(' ') - << std::resetiosflags(std::ios::fixed) - << std::resetiosflags(std::ios::scientific) - << std::resetiosflags(std::ios::floatfield) - << std::setprecision(8) - << "\r" << std::flush; -} diff --git a/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/EventProgress.h b/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/EventProgress.h deleted file mode 100644 index 664b7a4610738..0000000000000 --- a/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/EventProgress.h +++ /dev/null @@ -1,21 +0,0 @@ -#ifndef __EventProgress_H__ -#define __EventProgress_H__ - -#include - -class EventProgress { - public: - EventProgress(); - EventProgress(unsigned long nEvents); - ~EventProgress(); - - void update(unsigned long event); - - private: - unsigned long nEvents; - time_t startTime; - time_t lastUpdate; - unsigned int displayWidth; -}; - -#endif // __EventProgress_H__ diff --git a/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/JetTagMVAExtractor.cc b/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/JetTagMVAExtractor.cc deleted file mode 100644 index 1d595a5d46f22..0000000000000 --- a/branches/gem-CR-stand/RecoBTau/JetTagMVALearning/plugins/JetTagMVAExtractor.cc +++ /dev/null @@ -1,516 +0,0 @@ -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -#include "FWCore/Utilities/interface/Exception.h" -#include "FWCore/ParameterSet/interface/ParameterSet.h" -#include "FWCore/Utilities/interface/InputTag.h" -#include "FWCore/Framework/interface/Event.h" -#include "FWCore/Framework/interface/EventSetup.h" -#include "FWCore/Framework/interface/ESHandle.h" -#include "FWCore/Framework/interface/EDAnalyzer.h" - -#include "SimDataFormats/JetMatching/interface/JetFlavourMatching.h" - -#include "DataFormats/Common/interface/View.h" -#include "DataFormats/BTauReco/interface/JetTagInfo.h" -#include "DataFormats/BTauReco/interface/TaggingVariable.h" - -#include "CondFormats/PhysicsToolsObjects/interface/MVAComputer.h" - -#include "RecoBTau/JetTagComputer/interface/JetTagComputer.h" -#include "RecoBTau/JetTagComputer/interface/JetTagComputerRecord.h" -#include "RecoBTau/JetTagComputer/interface/GenericMVAComputer.h" -#include "RecoBTau/JetTagComputer/interface/GenericMVAJetTagComputer.h" -#include "RecoBTau/JetTagComputer/interface/TagInfoMVACategorySelector.h" - -using namespace reco; -using namespace PhysicsTools; - -namespace { // anonymous - -class ROOTContextSentinel { - public: - ROOTContextSentinel() : dir(gDirectory), file(gFile) {} - ~ROOTContextSentinel() { gDirectory = dir; gFile = file; } - - private: - TDirectory *dir; - TFile *file; -}; - -} // anonymous namespace - -static const AtomicId kJetPt(TaggingVariableTokens[btau::jetPt]); -static const AtomicId kJetEta(TaggingVariableTokens[btau::jetEta]); - -class JetTagMVAExtractor : public edm::EDAnalyzer { - public: - explicit JetTagMVAExtractor(const edm::ParameterSet ¶ms); - ~JetTagMVAExtractor(); - - virtual void analyze(const edm::Event &event, - const edm::EventSetup &es) override; - - private: - typedef std::vector Values; - - struct Index { - inline Index(int flavour, int index) : - index(index), flavour(flavour) {} - - inline bool operator == (const Index &rhs) const - { return index == rhs.index && flavour == rhs.flavour; } - - inline bool operator < (const Index &rhs) const - { return index == rhs.index ? (flavour < rhs.flavour) : (index < rhs.index); } - - int index; - int flavour; - }; - - struct Tree { - Tree(const JetTagMVAExtractor &main, Index index); - ~Tree(); - - struct Value { - Value() : type(0), multiple(false) {} - Value(char type, bool multiple) : type(type), multiple(multiple) {} - - void clear() { sInt = -999; sDouble = -999.0; vInt.clear(); vDouble.clear(); } - void set(double value) - { - if (type == 'I' && multiple) - vInt.push_back((int)std::floor(value + 0.5)); - else if (type == 'D' && multiple) - vDouble.push_back(value); - else if (type == 'I' && !multiple) - sInt = (int)std::floor(value + 0.5); - else if (type == 'D' && !multiple) - sDouble = value; - } - - char type; - bool multiple; - - void *indirect; - Int_t sInt; - Double_t sDouble; - std::vector vInt; - std::vector vDouble; - }; - - int flavour; - TTree *tree; - std::auto_ptr file; - std::map values; - }; - - struct Label { - Label() {} - Label(const edm::ParameterSet &pset); - Label(const Label &label) : variables(label.variables), label(label.label) {} - - struct Var { - Var(const std::string &name); - - AtomicId id; - char type; - bool multiple; - }; - - std::vector variables; - std::string label; - }; - - friend class Tree; - - void setup(const JetTagComputer &computer); - void process(Index index, const Values &values); - - edm::InputTag jetFlavour; - std::auto_ptr categorySelector; - - double minPt; - double minEta; - double maxEta; - - bool setupDone; - std::string jetTagComputer; - const GenericMVAComputer mvaComputer; - - std::map tagInfoLabels; - std::vector tagInfos; - - std::vector