diff --git a/JetAnalyzers/BuildFile.xml b/JetAnalyzers/BuildFile.xml index a4d9509b..8852bf1d 100644 --- a/JetAnalyzers/BuildFile.xml +++ b/JetAnalyzers/BuildFile.xml @@ -15,6 +15,7 @@ + diff --git a/JetAnalyzers/bin/jet_correction_analyzer_x.cc b/JetAnalyzers/bin/jet_correction_analyzer_x.cc index 69453955..33a19c37 100644 --- a/JetAnalyzers/bin/jet_correction_analyzer_x.cc +++ b/JetAnalyzers/bin/jet_correction_analyzer_x.cc @@ -18,6 +18,7 @@ #include "CondFormats/JetMETObjects/interface/FactorizedJetCorrector.h" #include "PhysicsTools/Utilities/interface/LumiReWeighting.h" #if __has_include("xrootd/XrdCl/XrdClFileSystem.hh") +#include "xrootd/XProtocol/XProtocol.hh" #include "xrootd/XrdCl/XrdClFileSystem.hh" #define has_xrdcl 1 #else diff --git a/JetAnalyzers/interface/JetResponseAnalyzer.hh b/JetAnalyzers/interface/JetResponseAnalyzer.hh index 55a2a23a..ac3adb7d 100644 --- a/JetAnalyzers/interface/JetResponseAnalyzer.hh +++ b/JetAnalyzers/interface/JetResponseAnalyzer.hh @@ -38,6 +38,7 @@ #include "DataFormats/VertexReco/interface/Vertex.h" #include "DataFormats/VertexReco/interface/VertexFwd.h" #include "DataFormats/TrackReco/interface/TrackFwd.h" +#include "DataFormats/PatCandidates/interface/PackedGenParticle.h" #include "JetMETCorrections/Objects/interface/JetCorrector.h" @@ -101,10 +102,9 @@ private: edm::EDGetTokenT srcVtx_; edm::EDGetTokenT srcGenInfo_; edm::EDGetTokenT > srcPileupInfo_; - //edm::EDGetTokenT > srcPFCandidates_; edm::EDGetTokenT srcPFCandidates_; edm::EDGetTokenT > > srcPFCandidatesAsFwdPtr_; - edm::EDGetTokenT > srcGenParticles_; + edm::EDGetTokenT > srcGenParticles_; std::string jecLabel_; diff --git a/JetAnalyzers/python/Defaults_cff.py b/JetAnalyzers/python/Defaults_cff.py index b5bd3a06..c43f02a8 100644 --- a/JetAnalyzers/python/Defaults_cff.py +++ b/JetAnalyzers/python/Defaults_cff.py @@ -25,7 +25,7 @@ JetResponseParameters = cms.PSet( # record flavor information, consider both RefPt and JetPt doComposition = cms.bool(True), - doFlavor = cms.bool(True), + doFlavor = cms.bool(False), doRefPt = cms.bool(True), doJetPt = cms.bool(True), saveCandidates = cms.bool(False), diff --git a/JetAnalyzers/python/JetReconstruction_cff.py b/JetAnalyzers/python/JetReconstruction_cff.py index 5d9f7098..51d89a82 100644 --- a/JetAnalyzers/python/JetReconstruction_cff.py +++ b/JetAnalyzers/python/JetReconstruction_cff.py @@ -87,7 +87,7 @@ #! #! PF JETS CHS #! -ak1PFCHSJets = ak1PFJets.clone( src = 'pfNoPileUpJME' ) +ak1PFCHSJets = ak1PFJets.clone( src = 'pfCHS' ) ak2PFCHSJets = ak1PFCHSJets.clone( rParam=0.2 ) ak3PFCHSJets = ak1PFCHSJets.clone( rParam=0.3 ) ak4PFCHSJets = ak1PFCHSJets.clone( rParam=0.4 ) diff --git a/JetAnalyzers/python/addAlgorithm.py b/JetAnalyzers/python/addAlgorithm.py index 4b89cc95..f27defbf 100644 --- a/JetAnalyzers/python/addAlgorithm.py +++ b/JetAnalyzers/python/addAlgorithm.py @@ -5,7 +5,7 @@ ################################################################################ partons = cms.EDProducer('PartonSelector', - src = cms.InputTag('genParticles'), + src = cms.InputTag('packedGenParticles'), withLeptons = cms.bool(False), skipFirstN = cms.uint32(0) ) @@ -20,6 +20,9 @@ from JetMETAnalysis.JetAnalyzers.JetCorrection_cff import * from RecoTauTag.TauTagTools.tauDecayModes_cfi import * from CommonTools.PileupAlgos.Puppi_cff import * +from JetMETAnalysis.JetAnalyzers.customizePuppiTune_cff import * + +genParticlesForJetsNoNu.src = cms.InputTag("packedGenParticles") stdClusteringAlgorithms = ['ak'] #Options: {ak,kt} stdJetTypes = ['calo','pf','pfchs','puppi'] #Options: {'calo','pf','pfchs','puppi'} @@ -382,7 +385,12 @@ def addAlgorithm(process, alg_size_type_corr, Defaults, reco, doProducer): sequence = cms.Sequence(recJets * sequence) if type == 'PUPPI': process.load('CommonTools.PileupAlgos.Puppi_cff') + process.load('JetMETAnalysis.JetAnalyzers.customizePuppiTune_cff') #puppi.candName = cms.InputTag("particleFlow") + #80x change + puppiCentral[0].applyLowPUCorr = cms.bool(False) + puppiForward[0].applyLowPUCorr = cms.bool(False) + puppi.vertexName = "offlineSlimmedPrimaryVertices" sequence = cms.Sequence(puppi * sequence) if type == 'Track': process.load('JetMETAnalysis.JetAnalyzers.TrackJetReconstruction_cff') @@ -505,10 +513,10 @@ def addAlgorithm(process, alg_size_type_corr, Defaults, reco, doProducer): srcRhos = cms.InputTag(''), srcRho = cms.InputTag(''), srcRhoHLT = cms.InputTag(''), - srcVtx = cms.InputTag('offlinePrimaryVertices'), + srcVtx = cms.InputTag('offlineSlimmedPrimaryVertices'), srcJetToUncorJetMap = cms.InputTag(jetToUncorJet.label(), 'rec2gen'), srcPFCandidates = cms.InputTag(''), - srcGenParticles = cms.InputTag('genParticles') + srcGenParticles = cms.InputTag('packedGenParticles') ) if doProducer: jraAnalyzer = 'JetResponseAnalyzerProducer' @@ -519,10 +527,10 @@ def addAlgorithm(process, alg_size_type_corr, Defaults, reco, doProducer): jecLabel = cms.string(''), srcRho = cms.InputTag(''), srcRhoHLT = cms.InputTag(''), - srcVtx = cms.InputTag('offlinePrimaryVertices'), + srcVtx = cms.InputTag('offlineSlimmedPrimaryVertices'), srcJetToUncorJetMap = cms.InputTag(jetToUncorJet.label(), 'rec2gen'), srcPFCandidates = cms.InputTag(''), - srcGenParticles = cms.InputTag('genParticles') + srcGenParticles = cms.InputTag('packedGenParticles') ) if type == 'CaloHLT': @@ -531,35 +539,38 @@ def addAlgorithm(process, alg_size_type_corr, Defaults, reco, doProducer): elif type == 'Calo': jra.srcRho = cms.InputTag("fixedGridRhoFastjetAllCalo") elif type == 'PFchs': - process.kt6PFchsJetsRhos = kt6PFJets.clone(src = 'pfNoPileUpJME', + process.pfCHS = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("fromPV")) + process.kt6PFchsJetsRhos = kt6PFJets.clone(src = 'pfCHS', doFastJetNonUniform = cms.bool(True), puCenters = cms.vdouble(-5,-4,-3,-2,-1,0,1,2,3,4,5), puWidth = cms.double(.8), nExclude = cms.uint32(2)) - sequence = cms.Sequence(process.kt6PFchsJetsRhos * sequence) + sequence = cms.Sequence(process.pfCHS * process.kt6PFchsJetsRhos * sequence) jra.srcRhos = cms.InputTag("kt6PFchsJetsRhos", "rhos") jra.srcRho = cms.InputTag("fixedGridRhoFastjetAll") - jra.srcPFCandidates = cms.InputTag('pfNoPileUpJME') + jra.srcPFCandidates = cms.InputTag('pfCHS') elif type == 'PFHLT': - jra.srcRho = ak4PFL1Fastjet.srcRho #added 02/15/2012 + jra.srcRho = ak4PFL1Fastjet.srcRho jra.srcRhoHLT = ak5PFHLTL1Fastjet.srcRho elif type == 'PFchsHLT': - jra.srcRho = ak4PFchsL1Fastjet.srcRho #added 02/15/2012 + jra.srcRho = ak4PFchsL1Fastjet.srcRho jra.srcRhoHLT = ak5PFchsHLTL1Fastjet.srcRho elif type == 'PF': + process.particleFlow = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("")) process.kt6PFJetsRhos = kt6PFJets.clone(doFastJetNonUniform = cms.bool(True), puCenters = cms.vdouble(-5,-4,-3,-2,-1,0,1,2,3,4,5), puWidth = cms.double(.8), nExclude = cms.uint32(2)) - sequence = cms.Sequence(process.kt6PFJetsRhos * sequence) + sequence = cms.Sequence(process.particleFlow * process.kt6PFJetsRhos * sequence) jra.srcRhos = cms.InputTag("kt6PFJetsRhos", "rhos") jra.srcRho = cms.InputTag("fixedGridRhoFastjetAll") - jra.srcPFCandidates = cms.InputTag('particleFlow') + jra.srcPFCandidates = cms.InputTag('packedPFCandidates') elif type == 'PUPPI': + process.particleFlow = cms.EDFilter("CandPtrSelector", src = cms.InputTag("packedPFCandidates"), cut = cms.string("")) process.kt6PFJetsRhos = kt6PFJets.clone(doFastJetNonUniform = cms.bool(True), puCenters = cms.vdouble(-5,-4,-3,-2,-1,0,1,2,3,4,5), puWidth = cms.double(.8), nExclude = cms.uint32(2)) - sequence = cms.Sequence(process.kt6PFJetsRhos * sequence) + sequence = cms.Sequence(process.particleFlow * process.kt6PFJetsRhos * sequence) jra.srcRhos = cms.InputTag("kt6PFJetsRhos", "rhos") jra.srcRho = cms.InputTag("fixedGridRhoFastjetAll") jra.srcPFCandidates = cms.InputTag('puppi') @@ -574,14 +585,8 @@ def addAlgorithm(process, alg_size_type_corr, Defaults, reco, doProducer): setattr(process,alg_size_type_corr,jra) sequence = cms.Sequence(sequence * jra) - - ## add chs to path is needed - if type == 'PFchs': - sequence = cms.Sequence(process.pfNoPileUpJMESequence * sequence) - - ## create the path and put in the sequence sequence = cms.Sequence(sequence) setattr(process, alg_size_type_corr + 'Sequence', sequence) path = cms.Path( sequence ) - setattr(process, alg_size_type_corr + 'Path', path) + setattr(process, alg_size_type_corr + 'Path', path) print alg_size_type_corr diff --git a/JetAnalyzers/src/JetResponseAnalyzer.cc b/JetAnalyzers/src/JetResponseAnalyzer.cc index dc0ccc14..35bc0afe 100644 --- a/JetAnalyzers/src/JetResponseAnalyzer.cc +++ b/JetAnalyzers/src/JetResponseAnalyzer.cc @@ -25,11 +25,11 @@ JetResponseAnalyzer::JetResponseAnalyzer(const edm::ParameterSet& iConfig) , srcRhoHLT_ (consumes(iConfig.getParameter ("srcRhoHLT"))) , srcVtx_ (consumes(iConfig.getParameter ("srcVtx"))) , srcGenInfo_ (consumes(edm::InputTag("generator")) ) - , srcPileupInfo_ (consumes >(edm::InputTag("addPileupInfo")) ) + , srcPileupInfo_ (consumes >(edm::InputTag("slimmedAddPileupInfo")) ) //, srcPFCandidates_ (consumes >(iConfig.getParameter("srcPFCandidates"))) , srcPFCandidates_ (consumes(iConfig.getParameter("srcPFCandidates"))) , srcPFCandidatesAsFwdPtr_(consumes > >(iConfig.getParameter("srcPFCandidates"))) - , srcGenParticles_ (consumes >(iConfig.getParameter("srcGenParticles"))) + , srcGenParticles_ (consumes >(iConfig.getParameter("srcGenParticles"))) , jecLabel_ (iConfig.getParameter ("jecLabel")) , doComposition_ (iConfig.getParameter ("doComposition")) , doFlavor_ (iConfig.getParameter ("doFlavor")) @@ -115,6 +115,46 @@ void JetResponseAnalyzer::beginJob() } +void getMult( vector const & particles, int* nMult, int* chMult ) { + + vector::const_iterator itParticle; + for (itParticle=particles.begin();itParticle!=particles.end();++itParticle){ + const reco::Candidate* pfCand = itParticle->get(); + + switch (std::abs(pfCand->pdgId())) { + + case 211: //PFCandidate::h: // charged hadron + (*chMult)++; + break; + + case 130: //PFCandidate::h0 : // neutral hadron + (*nMult)++; + break; + + case 22: //PFCandidate::gamma: // photon + (*nMult)++; + break; + + case 11: // PFCandidate::e: // electron + (*chMult)++; + break; + + case 13: //PFCandidate::mu: // muon + (*chMult)++; + break; + + case 1: // PFCandidate::h_HF : // hadron in HF + (*nMult)++; + break; + + case 2: //PFCandidate::egamma_HF : // electromagnetic in HF + (*nMult)++; + break; + } + } +} + +//_______________ //______________________________________________________________________________ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, const edm::EventSetup& iSetup) @@ -134,7 +174,7 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, edm::Handle vtx; edm::Handle pfCandidates; edm::Handle > > pfCandidatesAsFwdPtr; - edm::Handle > genParticles; + edm::Handle > genParticles; // Jet CORRECTOR jetCorrector_ = (jecLabel_.empty()) ? 0 : JetCorrector::getJetCorrector(jecLabel_,iSetup); @@ -189,8 +229,8 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, JRAEvt_->refpvz = -1000.0; iEvent.getByToken(srcGenParticles_, genParticles); for (size_t i = 0; i < genParticles->size(); ++i) { - const reco::GenParticle & genIt = (*genParticles)[i]; - if ( genIt.isHardProcess() ) { + const pat::PackedGenParticle & genIt = (*genParticles)[i]; + if ( genIt.fromHardProcessFinalState() ) { JRAEvt_->refpvz = genIt.vz(); break; } @@ -264,11 +304,10 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, else JRAEvt_->refdrjt->pop_back(); continue; } - JRAEvt_->refpdgid->push_back(0); - JRAEvt_->refpdgid_algorithmicDef->push_back(0); - JRAEvt_->refpdgid_physicsDef->push_back(0); if (getFlavorFromMap_) { + JRAEvt_->refpdgid_algorithmicDef->push_back(0); + JRAEvt_->refpdgid_physicsDef->push_back(0); reco::JetMatchedPartonsCollection::const_iterator itPartonMatch; itPartonMatch=refToPartonMap->begin(); for (;itPartonMatch!=refToPartonMap->end();++itPartonMatch) { @@ -315,10 +354,6 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, } } } - else { - JRAEvt_->refpdgid_algorithmicDef->at(JRAEvt_->nref)=0; - JRAEvt_->refpdgid_physicsDef->at(JRAEvt_->nref)=0; - } JRAEvt_->refpdgid->at(JRAEvt_->nref)=ref->pdgId(); // Beta/Beta Star Calculation @@ -439,12 +474,21 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, JRAEvt_->jtmuf ->push_back(pfJetRef->muonEnergyFraction() *JRAEvt_->jtjec->at(JRAEvt_->nref)); JRAEvt_->jthfhf->push_back(pfJetRef->HFHadronEnergyFraction() *JRAEvt_->jtjec->at(JRAEvt_->nref)); JRAEvt_->jthfef->push_back(pfJetRef->HFEMEnergyFraction() *JRAEvt_->jtjec->at(JRAEvt_->nref)); + int chMult=0, nMult=0; + getMult( ref.castTo()->getJetConstituents(), &nMult, &chMult ); + JRAEvt_->refnMult ->push_back( nMult ); + JRAEvt_->refchMult->push_back( chMult ); + + //this method exists for pfjets (neutralMultiplicity()), but not for genjets + //original i thought since genjet didn't have it i should make this method + chMult=0; nMult=0; + getMult( jet.castTo()->getJetConstituents(), &nMult, &chMult ); + JRAEvt_->jtnMult ->push_back( nMult ); + JRAEvt_->jtchMult->push_back( chMult ); } } - JRAEvt_->nref++; } - // PFCANDIDATE INFORMATION //Dual handle idea from https://github.com/aperloff/cmssw/blob/CMSSW_7_6_X/RecoJets/JetProducers/plugins/VirtualJetProducer.cc //Random-Cone algo from https://github.com/cihar29/OffsetAnalysis/blob/master/run_offset.py @@ -483,8 +527,6 @@ void JetResponseAnalyzer::analyze(const edm::Event& iEvent, } } } - - tree_->Fill(); return; diff --git a/JetUtilities/interface/JRAEvent.h b/JetUtilities/interface/JRAEvent.h index 8a4ba580..0ea7f1cd 100644 --- a/JetUtilities/interface/JRAEvent.h +++ b/JetUtilities/interface/JRAEvent.h @@ -80,6 +80,8 @@ public : vector* refpdgid_physicsDef; vector* refe; vector* refpt; + vector* refnMult; + vector* refchMult; vector* refeta; vector* refphi; vector* refy; @@ -88,6 +90,8 @@ public : vector* refarea; vector* jte; vector* jtpt; + vector* jtnMult; + vector* jtchMult; vector* jteta; vector* jtphi; vector* jty; @@ -140,6 +144,8 @@ public : TBranch *b_refpdgid_physicsDef; //! TBranch *b_refe; //! TBranch *b_refpt; //! + TBranch *b_refnMult; //! + TBranch *b_refchMult; //! TBranch *b_refeta; //! TBranch *b_refphi; //! TBranch *b_refy; //! @@ -148,6 +154,8 @@ public : TBranch *b_refarea; //! TBranch *b_jte; //! TBranch *b_jtpt; //! + TBranch *b_jtnMult; //! + TBranch *b_jtchMult; //! TBranch *b_jteta; //! TBranch *b_jtphi; //! TBranch *b_jty; //! diff --git a/JetUtilities/src/HistogramUtilities.cc b/JetUtilities/src/HistogramUtilities.cc index bd4c23a4..ef2a4788 100644 --- a/JetUtilities/src/HistogramUtilities.cc +++ b/JetUtilities/src/HistogramUtilities.cc @@ -117,7 +117,7 @@ namespace HistUtil { b[i] = hist->GetBinLowEdge(i+1); } Double_t median = Median(nbins,x,y,b,0,debug); - // Set the error equal to the difference between the median and the bin boundary +/* // Set the error equal to the difference between the median and the bin boundary // Choose the difference which is biggest // We cannot determine the exact median from binned values // The best we can do is a linear approximation of where inside the bin the median resides @@ -126,14 +126,27 @@ namespace HistUtil { Double_t width = hist->GetBinWidth(hist->FindBin(median)); Double_t high_edge = hist->GetBinLowEdge(hist->FindBin(median)) + width; Double_t error = std::max(std::abs(median-low_edge),std::abs(high_edge-median)); +*/ + + // The error on the median is non-trivial + // We use the "standard" relationship http://davidmlane.com/hyperstat/A106993.html + // for the error. But this only works if your distribution is ~normal. + // Fine binning is better to more precisely calculate the median & RMS + // EffectiveEntries is used to account for weights + Double_t error = 1.253 * hist->GetRMS() / TMath::Sqrt(hist->GetEffectiveEntries()); + if (debug) { - cout << "\tlow_dege: " << low_edge << endl << "\thigh_edge: " << high_edge << endl + /* cout << "\tlow_dege: " << low_edge << endl << "\thigh_edge: " << high_edge << endl << "\twidth: " << width << endl << "\terror: " << error << endl; cout << "\tdouble check error: " << std::max(std::abs(median-low_edge),std::abs(high_edge-median)) << endl << "\tabs(median-low_edge): " << std::abs(median-low_edge) << endl << "\tabs(high_edge-median): " << std::abs(high_edge-median) << endl << "\tmedian-low_edge: " << median-low_edge << endl << "\thigh_edge-median: " << high_edge-median << endl; +*/ + cout << "\terror: " << error << endl; + cout << "\tRMS: " << hist->GetRMS() << endl + << "\tentries: " << hist->GetEffectiveEntries() << endl; } delete [] x; delete [] y; diff --git a/JetUtilities/src/JRAEvent.cc b/JetUtilities/src/JRAEvent.cc index 64f863a8..f879f52a 100644 --- a/JetUtilities/src/JRAEvent.cc +++ b/JetUtilities/src/JRAEvent.cc @@ -84,8 +84,8 @@ void JRAEvent::MakeTree(TTree* tree) fChain->Branch("evt", &evt, "evt/L"); fChain->Branch("nref", &nref, "nref/b"); fChain->Branch("refrank", "vector", &refrank); + fChain->Branch("refpdgid", "vector", &refpdgid); if(!flags.test(0) || (flags.test(0) && flags.test(2))) { - fChain->Branch("refpdgid", "vector", &refpdgid); fChain->Branch("refpdgid_algorithmicDef", "vector", &refpdgid_algorithmicDef); fChain->Branch("refpdgid_physicsDef", "vector", &refpdgid_physicsDef); } @@ -120,6 +120,11 @@ void JRAEvent::MakeTree(TTree* tree) fChain->Branch("jtmuf", "vector", &jtmuf); fChain->Branch("jthfhf", "vector", &jthfhf); fChain->Branch("jthfef", "vector", &jthfef); + + fChain->Branch("refnMult", "vector", &refnMult); + fChain->Branch("refchMult", "vector", &refchMult); + fChain->Branch("jtnMult", "vector", &jtnMult); + fChain->Branch("jtchMult", "vector", &jtchMult); } } if (!flags.test(0) || (flags.test(0) && flags.test(6) && flags.test(7))) { @@ -184,8 +189,8 @@ void JRAEvent::Init(TTree *tree) fChain->SetBranchAddress("evt", &evt, &b_evt); fChain->SetBranchAddress("nref", &nref, &b_nref); fChain->SetBranchAddress("refrank", &refrank, &b_refrank); + fChain->SetBranchAddress("refpdgid", &refpdgid, &b_refpdgid); if(!flags.test(0) || (flags.test(0) && flags.test(2))) { - fChain->SetBranchAddress("refpdgid", &refpdgid, &b_refpdgid); fChain->SetBranchAddress("refpdgid_algorithmicDef", &refpdgid_algorithmicDef, &b_refpdgid_algorithmicDef); fChain->SetBranchAddress("refpdgid_physicsDef", &refpdgid_physicsDef, &b_refpdgid_physicsDef); } @@ -220,6 +225,11 @@ void JRAEvent::Init(TTree *tree) fChain->SetBranchAddress("jtmuf", &jtmuf, &b_jtmuf); fChain->SetBranchAddress("jthfhf", &jthfhf, &b_jthfhf); fChain->SetBranchAddress("jthfef", &jthfef, &b_jthfef); + + fChain->SetBranchAddress("refnMult", &refnMult, &b_refnMult); + fChain->SetBranchAddress("refchMult", &refchMult, &b_refchMult); + fChain->SetBranchAddress("jtnMult", &jtnMult, &b_jtnMult); + fChain->SetBranchAddress("jtchMult", &jtchMult, &b_jtchMult); } } if (!flags.test(0) || (flags.test(0) && flags.test(6) && flags.test(7))) { @@ -274,8 +284,8 @@ void JRAEvent::MakeVectors() ntrks_highpt = new vector; rhos = new vector; refrank = new vector; + refpdgid = new vector; if(!flags.test(0) || (flags.test(0) && flags.test(2))) { - refpdgid = new vector; refpdgid_algorithmicDef = new vector; refpdgid_physicsDef = new vector; } @@ -310,6 +320,11 @@ void JRAEvent::MakeVectors() jtmuf = new vector; jthfhf = new vector; jthfef = new vector; + + refnMult = new vector; + refchMult = new vector; + jtnMult = new vector; + jtchMult = new vector; } } if (!flags.test(0) || (flags.test(0) && flags.test(6) && flags.test(7))) { @@ -336,8 +351,8 @@ void JRAEvent::clear() ntrks_highpt->clear(); rhos->clear(); refrank->clear(); + refpdgid->clear(); if(!flags.test(0) || (flags.test(0) && flags.test(2))) { - refpdgid->clear(); refpdgid_algorithmicDef->clear(); refpdgid_physicsDef->clear(); } @@ -372,6 +387,11 @@ void JRAEvent::clear() jtmuf->clear(); jthfhf->clear(); jthfef->clear(); + + refnMult->clear(); + refchMult->clear(); + jtnMult->clear(); + jtchMult->clear(); } } if (!flags.test(0) || (flags.test(0) && flags.test(6) && flags.test(7))) {