CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Private Attributes
TestPythiaDecays Class Reference

#include <Lukas/TestPythiaDecays/plugins/TestPythiaDecays.cc>

Inheritance diagram for TestPythiaDecays:
edm::stream::EDAnalyzer<> edm::stream::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 TestPythiaDecays (const edm::ParameterSet &)
 
 ~TestPythiaDecays ()
 
- Public Member Functions inherited from edm::stream::EDAnalyzer<>
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

virtual void analyze (const edm::Event &, const edm::EventSetup &) override
 

Private Attributes

std::map< int, TH1D * > h_br
 
std::map< int, TH1D * > h_br_ref
 
std::map< int, TH1D * > h_decayVertexRho
 
std::map< int, TH1D * > h_decayVertexZ
 
std::map< int, TH1D * > h_mass
 
std::map< int, TH1D * > h_mass_ref
 
std::map< int, TH1D * > h_originVertexRho
 
std::map< int, TH1D * > h_originVertexZ
 
std::map< int, TH1D * > h_p
 
std::map< int, TH1D * > h_plt
 
std::map< int, TH1D * > h_plt_ref
 
std::map< int, TH1D * > h_v
 
std::map< int, std::vector< std::string > > knownDecayModes
 
std::string outputFile
 
std::vector< int > pids
 
Pythia8::Pythia * pythia
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Description: [one line class summary]

Implementation: [Notes on implementation]

Definition at line 48 of file TestPythiaDecays.cc.

Constructor & Destructor Documentation

TestPythiaDecays::TestPythiaDecays ( const edm::ParameterSet iConfig)
explicit

Definition at line 96 of file TestPythiaDecays.cc.

References funct::abs(), b, gather_cfg::cout, edmIntegrityCheck::d, cmsRelvalreport::exit, edm::ParameterSet::getParameter(), h_br, h_br_ref, h_decayVertexRho, h_decayVertexZ, h_mass, h_mass_ref, h_originVertexRho, h_originVertexZ, h_p, h_plt, h_plt_ref, h_v, mps_fire::i, knownDecayModes, diffTwoXMLs::label, min(), outputFile, AlCaHLTBitMon_ParallelJobs::p, sysUtil::pid, pids, parseEventContent::prod, pythia, AlCaHLTBitMon_QueryRunRegistry::string, and w.

97 {
98 
99  // output file
100  outputFile = iConfig.getParameter<std::string>("outputFile");
101 
102  // create pythia8 instance to access particle data
103  pythia = new Pythia8::Pythia();
104  pythia->init();
105  Pythia8::ParticleData pdt = pythia->particleData;
106 
107  // which particles will we study?
108  pids.push_back(15); // tau
109  pids.push_back(211); // pi+
110  pids.push_back(111); // pi0
111  pids.push_back(130); // K0L
112  pids.push_back(321); // K+
113  pids.push_back(323); // K*(392)
114  pids.push_back(411); // D+
115  pids.push_back(521); // B+
116 
117  // define histograms
118  for(size_t i = 0;i<pids.size();++i){
119 
120  int pid = abs(pids[i]);
121 
122  // get particle data
123  if(!pdt.isParticle(pid)){
124  std::cout << "ERROR: BAD PARTICLE, pythia is not aware of pid " << pid << std::endl;
125  std::exit(1);
126  }
127  Pythia8::ParticleDataEntry * pd = pdt.particleDataEntryPtr(pid);
128 
129  // mass histograms
130  double m0 = pd->m0();
131  double w = pd->mWidth();
132  double mmin,mmax;
133  if( w == 0){
134  mmin = m0 - m0/1000.;
135  mmax = m0 + m0/1000.;
136  }
137  else{
138  mmin = m0 - 2*w;
139  mmax = m0 + 2*w;
140  }
141  std::stringstream strstr;
142  strstr << "mass_" << pid;
143  h_mass[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),100,mmin,mmax);
144  h_mass_ref[pid] = (TH1D*)(h_mass[pid]->Clone(strstr.str().c_str()));
145  h_mass_ref[pid]->SetTitle(h_mass_ref[pid]->GetName());
146  if(w==0)
147  h_mass_ref[pid]->Fill(m0);
148  else{
149  for(int b =1;b<=h_mass_ref[pid]->GetNbinsX();++b){
150  double _val = h_mass_ref[pid]->GetBinCenter(b);
151  h_mass_ref[pid]->SetBinContent(b,TMath::BreitWigner(_val,m0,w));
152  }
153  }
154 
155  // p histogram
156  strstr.str("");
157  strstr << "p_" << pid;
158  h_p[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),100,0,20);
159 
160  // v histogram
161  strstr.str("");
162  strstr << "v_" << pid;
163  h_v[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),100,0,1.);
164 
165  // ctau histograms
166  double ctau0 = pd->tau0()/10.;
167  strstr.str("");
168  strstr << "plt_" << pid;
169  h_plt[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),100,0,std::min(5.*ctau0,500.));
170  h_plt_ref[pid] = (TH1D*)(h_plt[pid]->Clone(strstr.str().c_str()));
171  h_plt_ref[pid]->SetTitle(h_plt_ref[pid]->GetName());
172  for(int b =1;b<=h_plt_ref[pid]->GetNbinsX();++b){
173  double _val = h_plt_ref[pid]->GetBinCenter(b);
174  h_plt_ref[pid]->SetBinContent(b,TMath::Exp(-_val/ctau0)); //convert mm to cm
175  }
176 
177 
178  // br histograms
179  strstr.str("");
180  strstr << "br_" << pid;
181  h_br[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),0,0,0);
182  h_br[pid]->SetCanExtend(TH1::kAllAxes);
183  h_br_ref[pid] = (TH1D*)(h_br[pid]->Clone(strstr.str().c_str()));
184  h_br_ref[pid]->SetTitle(h_br_ref[pid]->GetName());
185  knownDecayModes[pid] = std::vector<std::string>();
186  for(int d = 0;d<pd->sizeChannels();++d){
187  Pythia8::DecayChannel & channel = pd->channel(d);
188  std::vector<int> prod;
189  for(int p = 0;p<channel.multiplicity();++p){
190  int pId = abs(channel.product(p));
191  // from FastSimulation/Event/src/KineParticleFilter.cc
192  bool particleCut = ( pId > 10 && pId != 12 && pId != 14 &&
193  pId != 16 && pId != 18 && pId != 21 &&
194  (pId < 23 || pId > 40 ) &&
195  (pId < 81 || pId > 100 ) && pId != 2101 &&
196  pId != 3101 && pId != 3201 && pId != 1103 &&
197  pId != 2103 && pId != 2203 && pId != 3103 &&
198  pId != 3203 && pId != 3303 );
199  if(particleCut)
200  prod.push_back(abs(channel.product(p)));
201  }
202  std::sort(prod.begin(),prod.end());
203  strstr.str("");
204  for(size_t p = 0;p<prod.size();++p){
205  strstr << "_" << prod[p];
206  }
207  std::string label = strstr.str();
208  h_br[pid]->Fill(label.c_str(),0.);
209  h_br_ref[pid]->Fill(label.c_str(),channel.bRatio());
210  h_br[pid]->SetEntries(0);
211  knownDecayModes[pid].push_back(label);
212  }
213 
214  // vertex plots
215  strstr.str("");
216  strstr << "originVertexRho_" << pid;
217  h_originVertexRho[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),100,0,200);
218  strstr.str("");
219  strstr << "originVertexZ_" << pid;
220  h_originVertexZ[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),100,0,400);
221  strstr.str("");
222  strstr << "decayVertexRho_" << pid;
223  h_decayVertexRho[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),100,0,200);
224  strstr.str("");
225  strstr << "decayVertexZ_" << pid;
226  h_decayVertexZ[pid] = new TH1D(strstr.str().c_str(),strstr.str().c_str(),100,0,400);
227  }
228 
229 }
T getParameter(std::string const &) const
std::map< int, std::vector< std::string > > knownDecayModes
const double w
Definition: UKUtility.cc:23
std::map< int, TH1D * > h_v
std::vector< int > pids
std::map< int, TH1D * > h_decayVertexZ
Pythia8::Pythia * pythia
std::map< int, TH1D * > h_br_ref
std::map< int, TH1D * > h_plt_ref
std::map< int, TH1D * > h_decayVertexRho
std::map< int, TH1D * > h_originVertexZ
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
T min(T a, T b)
Definition: MathUtil.h:58
HepPDT::ParticleData ParticleData
std::map< int, TH1D * > h_plt
double b
Definition: hdecay.h:120
std::string outputFile
std::map< int, TH1D * > h_br
std::map< int, TH1D * > h_mass
std::map< int, TH1D * > h_p
std::map< int, TH1D * > h_mass_ref
std::map< int, TH1D * > h_originVertexRho
TestPythiaDecays::~TestPythiaDecays ( )

Definition at line 232 of file TestPythiaDecays.cc.

References f, h_br, h_br_ref, h_decayVertexRho, h_decayVertexZ, h_mass, h_mass_ref, h_originVertexRho, h_originVertexZ, h_p, h_plt, h_plt_ref, h_v, mps_fire::i, outputFile, sysUtil::pid, and pids.

233 {
234 
235  // do anything here that needs to be done at desctruction time
236  // (e.g. close files, deallocate resources etc.)
237  TFile * f = TFile::Open(outputFile.c_str(),"RECREATE");
238  f->cd();
239  f->mkdir("observed");
240  f->mkdir("prediction");
241  for(size_t i = 0;i<pids.size();++i){
242  int pid = pids[i];
243  f->cd("observed");
244  h_mass[pid]->Write();
245  h_plt[pid]->Write();
246  h_br[pid]->Write();
247  h_originVertexZ[pid]->Write();
248  h_originVertexRho[pid]->Write();
249  h_decayVertexZ[pid]->Write();
250  h_decayVertexRho[pid]->Write();
251  h_p[pid]->Write();
252  h_v[pid]->Write();
253  f->cd("prediction");
254  h_mass_ref[pid]->Write();
255  h_plt_ref[pid]->Write();
256  h_br_ref[pid]->Write();
257  }
258  f->Close();
259 }
std::map< int, TH1D * > h_v
std::vector< int > pids
std::map< int, TH1D * > h_decayVertexZ
std::map< int, TH1D * > h_br_ref
std::map< int, TH1D * > h_plt_ref
std::map< int, TH1D * > h_decayVertexRho
std::map< int, TH1D * > h_originVertexZ
double f[11][100]
std::map< int, TH1D * > h_plt
std::string outputFile
std::map< int, TH1D * > h_br
std::map< int, TH1D * > h_mass
std::map< int, TH1D * > h_p
std::map< int, TH1D * > h_mass_ref
std::map< int, TH1D * > h_originVertexRho

Member Function Documentation

void TestPythiaDecays::analyze ( const edm::Event iEvent,
const edm::EventSetup iSetup 
)
overrideprivatevirtual

Definition at line 268 of file TestPythiaDecays.cc.

References funct::abs(), begin, edmIntegrityCheck::d, end, spr::find(), edm::Event::getByLabel(), h_br, h_br_ref, h_decayVertexRho, h_decayVertexZ, h_mass, h_originVertexRho, h_originVertexZ, h_p, h_plt, h_v, createfilelist::int, knownDecayModes, diffTwoXMLs::label, genParticles_cff::map, ResonanceBuilder::mass, CoreSimTrack::momentum(), SimVertex::noParent(), SimTrack::noVertex(), AlCaHLTBitMon_ParallelJobs::p, class-composition::parent, SimVertex::parentIndex(), sysUtil::pid, pids, CoreSimVertex::position(), parseEventContent::prod, findQualityFiles::size, AlCaHLTBitMon_QueryRunRegistry::string, CoreSimTrack::type(), and SimTrack::vertIndex().

269 {
270  using namespace edm;
271 
272  Handle<std::vector<SimTrack> > simtracks;
273  iEvent.getByLabel("famosSimHits",simtracks);
274 
275  Handle<std::vector<SimVertex> > simvertices;
276  iEvent.getByLabel("famosSimHits",simvertices);
277 
278  // create maps
279 
280  // initialize
281  std::map<size_t,std::vector<size_t> > childMap; // child indices vs parent index
282  std::map<size_t,int> parentMap; // parent index vs child index
283  for(size_t j = 0;j<simtracks->size();j++){
284  childMap[j] = std::vector<size_t>();
285  parentMap[j] = -1;
286  }
287 
288  // do the mapping
289  for(size_t j = 0;j<simtracks->size();j++){
290  size_t childIndex = j;
291  const SimTrack & child = simtracks->at(childIndex);
292  if(child.noVertex())
293  continue;
294  const SimVertex & vertex = simvertices->at(child.vertIndex());
295  if(vertex.noParent())
296  continue;
297  size_t parentIndex = vertex.parentIndex();
298  childMap[parentIndex].push_back(childIndex);
299  parentMap[childIndex] = int(parentIndex);
300  }
301 
302 
303  for(size_t j = 0;j<simtracks->size();j++){
304  const SimTrack & parent = simtracks->at(j);
305  int pid = abs(parent.type());
306  if(std::find(pids.begin(),pids.end(),pid)==pids.end())
307  continue;
308 
309  // fill mass hist
310  double mass = parent.momentum().M();
311  h_mass[pid]->Fill(mass);
312 
313  // fill p hist
314  h_p[pid]->Fill(parent.momentum().P());
315 
316  // fill vertex position hist
317  if(!parent.noVertex()){
318  const SimVertex & originVertex = simvertices->at(parent.vertIndex());
319  h_originVertexRho[pid]->Fill(originVertex.position().Rho());
320  h_originVertexZ[pid]->Fill(std::fabs(originVertex.position().Z()));
321  }
322  if(childMap[j].size() > 0){
323  const SimTrack & child = simtracks->at(childMap[j][0]);
324  const SimVertex & decayVertex = simvertices->at(child.vertIndex());
325  h_decayVertexRho[pid]->Fill(decayVertex.position().Rho());
326  h_decayVertexZ[pid]->Fill(std::fabs(decayVertex.position().Z()));
327  }
328  }
329 
330 
331  for(std::map<size_t,std::vector<size_t> >::iterator it = childMap.begin();it != childMap.end();++it){
332 
333  // fill ctau hist
334  size_t parentIndex = it->first;
335  const SimTrack & parent = simtracks->at(parentIndex);
336  int pid = abs(parent.type());
337  std::vector<size_t> & childIndices = it->second;
338  if(childIndices.size() == 0)
339  continue;
340 
341  if(std::find(pids.begin(),pids.end(),pid)==pids.end())
342  continue;
343 
344 
345  const SimVertex & origin_vertex = simvertices->at(parent.vertIndex());
346  const SimTrack & child0 = simtracks->at(childIndices[0]);
347  const SimVertex & decay_vertex = simvertices->at(child0.vertIndex());
348 
349  TLorentzVector lv_origin_vertex(origin_vertex.position().X(),origin_vertex.position().Y(),origin_vertex.position().Z(),origin_vertex.position().T());
350  TLorentzVector lv_decay_vertex(decay_vertex.position().X(),decay_vertex.position().Y(),decay_vertex.position().Z(),decay_vertex.position().T());
351  TLorentzVector lv_dist = lv_decay_vertex - lv_origin_vertex;
352  TLorentzVector lv_parent(parent.momentum().Px(),parent.momentum().Py(),parent.momentum().Pz(),parent.momentum().E());
353  TVector3 boost = lv_parent.BoostVector();
354  lv_dist.Boost(-boost);
355  h_v[pid]->Fill(boost.Mag());
356  double plt = lv_dist.T();
357  h_plt[pid]->Fill(plt);
358 
359  // fill br hist
360  std::vector<int> prod;
361  for(size_t d = 0;d<childIndices.size();++d){
362  prod.push_back(abs(simtracks->at(childIndices[d]).type()));
363  }
364  std::sort(prod.begin(),prod.end());
365  std::stringstream strstr;
366  for(size_t p = 0;p<prod.size();++p){
367  strstr << "_" << prod[p];
368  }
369  std::string label = strstr.str();
370  if(std::find(knownDecayModes[pid].begin(),knownDecayModes[pid].end(),label)==knownDecayModes[pid].end())
371  label = "u" + label;
372  h_br[pid]->Fill(label.c_str(),1.);
373  h_br_ref[pid]->Fill(label.c_str(),0.); // keep h_br and h_br_ref in sync
374  }
375 }
size
Write out results.
std::map< int, std::vector< std::string > > knownDecayModes
Definition: CLHEP.h:16
std::map< int, TH1D * > h_v
std::vector< int > pids
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:20
std::map< int, TH1D * > h_decayVertexZ
int parentIndex() const
Definition: SimVertex.h:33
std::map< int, TH1D * > h_br_ref
std::map< int, TH1D * > h_decayVertexRho
std::map< int, TH1D * > h_originVertexZ
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
bool noVertex() const
Definition: SimTrack.h:30
const math::XYZTLorentzVectorD & position() const
Definition: CoreSimVertex.h:26
#define end
Definition: vmac.h:37
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:416
int vertIndex() const
index of the vertex in the Event container (-1 if no vertex)
Definition: SimTrack.h:29
std::map< int, TH1D * > h_plt
int type() const
particle type (HEP PDT convension)
Definition: CoreSimTrack.h:25
#define begin
Definition: vmac.h:30
HLT enums.
std::map< int, TH1D * > h_br
const math::XYZTLorentzVectorD & momentum() const
Definition: CoreSimTrack.h:22
std::map< int, TH1D * > h_mass
std::map< int, TH1D * > h_p
bool noParent() const
Definition: SimVertex.h:34
std::map< int, TH1D * > h_originVertexRho
void TestPythiaDecays::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 413 of file TestPythiaDecays.cc.

References edm::ConfigurationDescriptions::addDefault(), DEFINE_FWK_MODULE, and edm::ParameterSetDescription::setUnknown().

413  {
414  //The following says we do not know what parameters are allowed so do no validation
415  // Please change this to state exactly what you do use, even if it is no parameters
417  desc.setUnknown();
418  descriptions.addDefault(desc);
419 }
void addDefault(ParameterSetDescription const &psetDescription)

Member Data Documentation

std::map<int,TH1D*> TestPythiaDecays::h_br
private

Definition at line 76 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_br_ref
private

Definition at line 77 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_decayVertexRho
private

Definition at line 73 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_decayVertexZ
private

Definition at line 74 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_mass
private

Definition at line 66 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_mass_ref
private

Definition at line 69 of file TestPythiaDecays.cc.

Referenced by TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_originVertexRho
private

Definition at line 71 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_originVertexZ
private

Definition at line 72 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_p
private

Definition at line 67 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_plt
private

Definition at line 70 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_plt_ref
private

Definition at line 75 of file TestPythiaDecays.cc.

Referenced by TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,TH1D*> TestPythiaDecays::h_v
private

Definition at line 68 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

std::map<int,std::vector<std::string> > TestPythiaDecays::knownDecayModes
private

Definition at line 79 of file TestPythiaDecays.cc.

Referenced by analyze(), and TestPythiaDecays().

std::string TestPythiaDecays::outputFile
private

Definition at line 82 of file TestPythiaDecays.cc.

Referenced by TestPythiaDecays(), and ~TestPythiaDecays().

std::vector<int> TestPythiaDecays::pids
private

Definition at line 65 of file TestPythiaDecays.cc.

Referenced by analyze(), TestPythiaDecays(), and ~TestPythiaDecays().

Pythia8::Pythia* TestPythiaDecays::pythia
private

Definition at line 81 of file TestPythiaDecays.cc.

Referenced by TestPythiaDecays().