CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
ParticleReplacerParticleGun Class Reference

#include <TauAnalysis/MCEmbeddingTools/src/ParticleReplacerParticleGun.cc>

Inheritance diagram for ParticleReplacerParticleGun:
ParticleReplacerBase

Public Member Functions

virtual void beginJob ()
 
virtual void endJob ()
 
 ParticleReplacerParticleGun (const edm::ParameterSet &, bool)
 
std::auto_ptr< HepMC::GenEvent > produce (const reco::MuonCollection &muons, const reco::Vertex *pvtx=0, const HepMC::GenEvent *genEvt=0)
 
virtual ~ParticleReplacerParticleGun ()
 
- Public Member Functions inherited from ParticleReplacerBase
virtual void beginRun (const edm::Run &iRun, const edm::EventSetup &iSetup)
 
virtual void endRun ()
 
 ParticleReplacerBase (const edm::ParameterSet &iConfig)
 
virtual ~ParticleReplacerBase ()
 

Private Member Functions

void correctTauMass (const reco::MuonCollection &muons, std::vector< HepMC::FourVector > &corrected)
 
void forceTauolaTauDecays ()
 
float randomPolarization ()
 
float tauHelicity (int pdg_id)
 
void tauola_forParticleGun (int tau_idx, int pdg_id, const HepMC::FourVector &particle_momentum)
 

Private Attributes

std::string forceTauDecay_
 
int forceTauMinusHelicity_
 
int forceTauPlusHelicity_
 
std::string forceTauPolarization_
 
std::string generatorMode_
 
int gunParticle_
 
std::string particleOrigin_
 
float pol1_ [4]
 
float pol2_ [4]
 
bool printout_
 
gen::Pythia6Service pythia_
 
gen::TauolaInterfaceBasetauola_
 

Additional Inherited Members

- Public Attributes inherited from ParticleReplacerBase
unsigned int passed
 
unsigned int tried
 
- Protected Attributes inherited from ParticleReplacerBase
const double tauMass
 

Detailed Description

Description: Particle gun replacer algorithm

Implementation: <Notes on="" implementation>="">

Definition at line 30 of file ParticleReplacerParticleGun.h.

Constructor & Destructor Documentation

ParticleReplacerParticleGun::ParticleReplacerParticleGun ( const edm::ParameterSet iConfig,
bool  verbose 
)
explicit

Definition at line 20 of file ParticleReplacerParticleGun.cc.

References ParticleReplacerGunVar::decayRandomEngine, edm::hlt::Exception, forceTauDecay_, forceTauMinusHelicity_, forceTauPlusHelicity_, forceTauPolarization_, generatorMode_, reco::get(), edm::RandomNumberGenerator::getEngine(), edm::ParameterSet::getParameter(), edm::Service< T >::isAvailable(), pol1_, pol2_, gen::TauolaInterfaceBase::SetDecayRandomEngine(), and tauola_.

20  :
21  ParticleReplacerBase(iConfig),
22  pythia_(iConfig),
23  particleOrigin_(iConfig.getParameter<std::string>("particleOrigin")),
24  forceTauPolarization_(iConfig.getParameter<std::string>("forceTauPolarization")),
25  forceTauDecay_(iConfig.getParameter<std::string>("forceTauDecay")),
26  generatorMode_(iConfig.getParameter<std::string>("generatorMode")),
27  gunParticle_(iConfig.getParameter<int>("gunParticle")),
28  forceTauPlusHelicity_(iConfig.getParameter<int>("forceTauPlusHelicity")),
29  forceTauMinusHelicity_(iConfig.getParameter<int>("forceTauMinusHelicity")),
31  tauola_ = (gen::TauolaInterfaceBase*)(TauolaFactory::get()->create("Tauolapp105", iConfig.getParameter<edm::ParameterSet>("ExternalDecays").getParameter<edm::ParameterSet>("Tauola")));
32  //srand(time(NULL)); // Should we use RandomNumberGenerator service? your require a random number generator here
33 
35  if(!rng.isAvailable()) {
36  throw cms::Exception("Configuration")
37  << "The RandomNumberProducer module requires the RandomNumberGeneratorService\n"
38  "which appears to be absent. Please add that service to your configuration\n"
39  "or remove the modules that require it." << std::endl;
40  }
41  // this is a global variable defined in GeneratorInterface/ExternalDecays/src/ExternalDecayDriver.cc
44 
45  if(forceTauPlusHelicity_ != 0)
46  edm::LogInfo("MuonReplacement") << "[ParticleReplacer::ParticleReplacer] "
47  << "Forcing tau+ to helicity " << forceTauPlusHelicity_ << std::endl;
48  if(forceTauMinusHelicity_ != 0)
49  edm::LogInfo("MuonReplacement") << "[ParticleReplacer::ParticleReplacer] "
50  << "Forcing tau- to helicity " << forceTauMinusHelicity_ << std::endl;
52  edm::LogInfo("MuonReplacement") << "[ParticleReplacer::ParticleReplacer] "
53  << " Forcing tau helicity as decayed from a " << forceTauPolarization_ << std::endl;
54  if(forceTauDecay_ != "" && forceTauDecay_ != "none")
55  edm::LogInfo("MuonReplacement") << "[ParticleReplacer::ParticleReplacer] "
56  << "Forcing tau decaying into " << forceTauDecay_ << std::endl;
57 
58  std::memset(pol1_, 0, 4*sizeof(float));
59  std::memset(pol2_, 0, 4*sizeof(float));
60 
61  if(generatorMode_ != "Tauola")
62  throw cms::Exception("Configuration") << "Generator mode other than Tauola is not supported" << std::endl;
63 
64  throw cms::Exception("UnimplementedFeature") << "ParticleReplacerParticleGun is not usable yet." << std::endl;
65 }
T getParameter(std::string const &) const
virtual void SetDecayRandomEngine(CLHEP::HepRandomEngine *decayRandomEngine)
ParticleReplacerBase(const edm::ParameterSet &iConfig)
bool isAvailable() const
Definition: Service.h:47
virtual CLHEP::HepRandomEngine & getEngine() const =0
Use this to get the random number engine, this is the only function most users should call...
CLHEP::HepRandomEngine * decayRandomEngine
gen::TauolaInterfaceBase * tauola_
T get(const Candidate &c)
Definition: component.h:56
ParticleReplacerParticleGun::~ParticleReplacerParticleGun ( )
virtual

Definition at line 67 of file ParticleReplacerParticleGun.cc.

67 {}

Member Function Documentation

void ParticleReplacerParticleGun::beginJob ( void  )
virtual

Reimplemented from ParticleReplacerBase.

Definition at line 69 of file ParticleReplacerParticleGun.cc.

References abs, gunParticle_, pythia_, and gen::Pythia6Service::setGeneralParams().

69  {
71 
73 
74  if(abs(gunParticle_) == 15) {
75  /* FIXME
76  call_tauola(-1,1);
77  */
78  }
79 }
#define abs(x)
Definition: mlp_lapack.h:159
void ParticleReplacerParticleGun::correctTauMass ( const reco::MuonCollection muons,
std::vector< HepMC::FourVector > &  corrected 
)
private

Definition at line 240 of file ParticleReplacerParticleGun.cc.

References abs, gunParticle_, mathSSE::sqrt(), and ParticleReplacerBase::tauMass.

Referenced by produce().

240  {
241  if(abs(gunParticle_) == 15) {
242  // Correct energy for tau
243  for(reco::MuonCollection::const_iterator iMuon = muons.begin(); iMuon != muons.end(); ++iMuon) {
244  const reco::Muon::LorentzVector& vec = iMuon->p4();
245 
246  double E = sqrt(tauMass*tauMass + vec.x()*vec.x() + vec.y()*vec.y() + vec.z()*vec.z());
247 
248  corrected.push_back(HepMC::FourVector(vec.x(), vec.y(), vec.z(), E));
249  }
250  }
251  else {
252  // Just copy the LorentzVector
253  for(reco::MuonCollection::const_iterator iMuon = muons.begin(); iMuon != muons.end(); ++iMuon) {
254  corrected.push_back(iMuon->p4());
255  }
256  }
257 }
#define abs(x)
Definition: mlp_lapack.h:159
T sqrt(T t)
Definition: SSEVec.h:48
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:41
tuple muons
Definition: patZpeak.py:38
void ParticleReplacerParticleGun::endJob ( void  )
virtual

Reimplemented from ParticleReplacerBase.

Definition at line 81 of file ParticleReplacerParticleGun.cc.

References abs, and gunParticle_.

81  {
82  if(abs(gunParticle_) == 15) {
83  /* FIXME
84  call_tauola(1,1);
85  */
86  }
87 }
#define abs(x)
Definition: mlp_lapack.h:159
void ParticleReplacerParticleGun::forceTauolaTauDecays ( )
private

Definition at line 259 of file ParticleReplacerParticleGun.cc.

References forceTauDecay_.

Referenced by produce().

259  {
260  if(forceTauDecay_ == "" || forceTauDecay_ == "none") return;
261 
262  // for documentation look at Tauola file tauola_photos_ini.f
263  // COMMON block COMMON / TAUBRA / GAMPRT(30),JLIST(30),NCHAN
264 
265  if(forceTauDecay_ == "hadrons"){
266  /* FIXME
267  taubra.gamprt[0] = 0; // disable branchings to electrons in Tauola
268  taubra.gamprt[1] = 0; // disable branchings to muons in Tauola
269  */
270  }
271  else if(forceTauDecay_ == "1prong"){
272  /* FIXME
273  taubra.gamprt[0] = 0; // disable branchings to electrons in Tauola
274  taubra.gamprt[1] = 0; // disable branchings to muons in Tauola
275  taubra.gamprt[7] = 0;
276  taubra.gamprt[9] = 0;
277  taubra.gamprt[10] = 0;
278  taubra.gamprt[11] = 0;
279  taubra.gamprt[12] = 0;
280  taubra.gamprt[13] = 0;
281  taubra.gamprt[17] = 0;
282  */
283  }
284  else if(forceTauDecay_ == "3prong"){
285  /* FIXME
286  taubra.gamprt[0] = 0; // disable branchings to electrons in Tauola
287  taubra.gamprt[1] = 0; // disable branchings to muons in Tauola
288  taubra.gamprt[2] = 0;
289  taubra.gamprt[3] = 0;
290  taubra.gamprt[4] = 0;
291  taubra.gamprt[5] = 0;
292  taubra.gamprt[6] = 0;
293  taubra.gamprt[8] = 0;
294  taubra.gamprt[14] = 0;
295  taubra.gamprt[15] = 0;
296  taubra.gamprt[16] = 0;
297  taubra.gamprt[18] = 0;
298  taubra.gamprt[19] = 0;
299  taubra.gamprt[20] = 0;
300  taubra.gamprt[21] = 0;
301  */
302  }
303  else
304  edm::LogError("MuonReplacement") << "[ParticleReplacerAlgoParticleGun::forceTauoladecays] "
305  << "Unknown value for forcing tau decays: " << forceTauDecay_ << std::endl;
306 }
std::auto_ptr< HepMC::GenEvent > ParticleReplacerParticleGun::produce ( const reco::MuonCollection muons,
const reco::Vertex pvtx = 0,
const HepMC::GenEvent *  genEvt = 0 
)
virtual

Implements ParticleReplacerBase.

Definition at line 89 of file ParticleReplacerParticleGun.cc.

References abs, call_py1ent(), call_pyexec(), gen::call_pylist(), DeDxDiscriminatorTools::charge(), conv, correctTauMass(), gather_cfg::cout, edm::hlt::Exception, forceTauolaTauDecays(), gunParticle_, i, metsig::muon, particleOrigin_, pi, point, printout_, pythia_, edm::shift, lumiQTWidget::t, tauola_forParticleGun(), reco::LeafCandidate::vx(), reco::LeafCandidate::vy(), reco::LeafCandidate::vz(), x, reco::Vertex::x(), detailsBasic3DVector::y, reco::Vertex::y(), detailsBasic3DVector::z, and reco::Vertex::z().

89  {
90  if(genEvt != 0)
91  throw cms::Exception("UnimplementedFeature") << "ParticleReplacerParticleGun does NOT support merging at HepMC level" << std::endl;
92 
93  std::auto_ptr<HepMC::GenEvent> evt(0);
94  std::vector<HepMC::FourVector> muons_corrected;
95  muons_corrected.reserve(muons.size());
96  correctTauMass(muons, muons_corrected);
97 
99 
100  for(unsigned int i=0; i<muons_corrected.size(); ++i) {
101  HepMC::FourVector& muon = muons_corrected[i];
102  call_py1ent(i+1, gunParticle_*muons[i].charge(), muon.e(), muon.theta(), muon.phi());
103  }
104 
105  // Let's not do a call_pyexec here because it's unnecessary
106 
107  if(printout_) {
108  std::cout << " ///////////////////// After py1ent, before pyhepc /////////////////////" << std::endl;
109  call_pylist(3);
110  }
111 
112  // Vertex shift
113  call_pyhepc(1); // pythia -> hepevt
114 
115  if(printout_) {
116  std::cout << " ///////////////////// After pyhepc, before vertex shift /////////////////////" << std::endl;
117  HepMC::HEPEVT_Wrapper::print_hepevt();
118  }
119  // Search for HepMC/HEPEVT_Wrapper.h for the wrapper interface
120  int nparticles = HepMC::HEPEVT_Wrapper::number_entries();
121  HepMC::ThreeVector shift(0,0,0);
122  if(particleOrigin_ == "primaryVertex") {
123  if(!pvtx)
124  throw cms::Exception("LogicError") << "Particle origin set to primaryVertex, but pvtx is null!" << std::endl;
125 
126  shift.setX(pvtx->x()*10); // cm -> mm
127  shift.setY(pvtx->y()*10); // cm -> mm
128  shift.setZ(pvtx->z()*10); // cm -> mm
129  }
130  for(int i=1; i <= nparticles; ++i) {
131  if(abs(HepMC::HEPEVT_Wrapper::id(i)) != abs(gunParticle_)) {
132  throw cms::Exception("LogicError") << "Particle in HEPEVT is " << HepMC::HEPEVT_Wrapper::id(i)
133  << " is not the same as gunParticle " << gunParticle_
134  << " for index " << i << std::endl;
135  }
136 
137  if(particleOrigin_ == "muonReferencePoint") {
138  const reco::Muon& muon = muons[i-1];
139  shift.setX(muon.vx()*10); // cm -> mm
140  shift.setY(muon.vy()*10); // cm -> mm
141  shift.setZ(muon.vz()*10); // cm -> mm
142  }
143 
144  HepMC::HEPEVT_Wrapper::set_position(i,
149  }
150 
151  if(printout_) {
152  std::cout << " ///////////////////// After vertex shift, before pyhepc/tauola /////////////////////" << std::endl;
153  HepMC::HEPEVT_Wrapper::print_hepevt();
154  }
155 
156  if(abs(gunParticle_) == 15){
157  // Code example from TauolaInterface::processEvent()
158  /* FIXME
159  int dummy = -1;
160  int numGenParticles_beforeTAUOLA = call_ihepdim(dummy);
161  */
162 
164 
165  for(unsigned int i=0; i<muons_corrected.size(); ++i) {
166  tauola_forParticleGun(i+1, gunParticle_*muons[i].charge(), muons_corrected[i]);
167  }
168 
169  if(printout_) {
170  std::cout << " ///////////////////// After tauola, before pyhepc /////////////////////" << std::endl;
171  HepMC::HEPEVT_Wrapper::print_hepevt();
172  }
173  call_pyhepc(2); // hepevt->pythia
174  if(printout_) {
175  std::cout << " ///////////////////// After pyhepc, before vertex fix /////////////////////" << std::endl;
176  call_pylist(3);
177  }
178 
179  // Fix tau decay vertex position
180  /* FIXME
181  int numGenParticles_afterTAUOLA = call_ihepdim(dummy);
182  tauola_.setDecayVertex(numGenParticles_beforeTAUOLA, numGenParticles_afterTAUOLA);
183  */
184 
185  if(printout_) {
186  /* FIXME
187  std::cout << " numGenParticles_beforeTAUOLA " << numGenParticles_beforeTAUOLA << std::endl
188  << " numGenParticles_afterTAUOLA " << numGenParticles_afterTAUOLA << std::endl;
189  */
190  std::cout << " ///////////////////// After vertex fix, before pyexec /////////////////////" << std::endl;
191  call_pylist(3);
192  }
193  }
194  else {
195  call_pyhepc(2); // hepevt->pythia
196  if(printout_) {
197  std::cout << " ///////////////////// After pyhepc, before pyexec /////////////////////" << std::endl;
198  call_pylist(3);
199  }
200  }
201 
202  call_pyexec(); // taus: decay pi0's etc; others: decay whatever
203 
204  if(printout_) {
205  std::cout << " ///////////////////// After pyexec, before pyhepc /////////////////////" << std::endl;
206  call_pylist(3);
207  }
208 
209  call_pyhepc(1); // pythia -> hepevt
210 
211  HepMC::IO_HEPEVT conv;
212  evt = std::auto_ptr<HepMC::GenEvent>(new HepMC::GenEvent(*conv.read_next_event()));
213 
214  if(printout_) {
215  evt->print();
216 
217  std::cout << std::endl << "Vertices: " << std::endl;
218  for(HepMC::GenEvent::vertex_const_iterator iter = evt->vertices_begin(); iter != evt->vertices_end(); ++iter) {
219  std::cout << "Vertex " << (*iter)->id() << ", barcode " << (*iter)->barcode() << std::endl;
220 
221  HepMC::ThreeVector point = (*iter)->point3d();
222  std::cout << " Point (" << point.x() << ", " << point.y() << ", " << point.z() << ")" << std::endl;
223 
224  std::cout << " Incoming particles: ";
225  for(HepMC::GenVertex::particles_in_const_iterator pi = (*iter)->particles_in_const_begin(); pi != (*iter)->particles_in_const_end(); ++pi) {
226  std::cout << (*pi)->pdg_id() << " ";
227  }
228  std::cout << std::endl;
229  std::cout << " Outgoing particles: ";
230  for(HepMC::GenVertex::particles_out_const_iterator pi = (*iter)->particles_out_const_begin(); pi != (*iter)->particles_out_const_end(); ++pi) {
231  std::cout << (*pi)->pdg_id() << " ";
232  }
233  std::cout << std::endl << std::endl;
234  }
235  }
236 
237  return evt;
238 }
int i
Definition: DBlmapReader.cc:9
static HepMC::IO_HEPEVT conv
double y() const
y coordinate
Definition: Vertex.h:97
void call_pyexec()
Definition: extraPythia.cc:3
void correctTauMass(const reco::MuonCollection &muons, std::vector< HepMC::FourVector > &corrected)
#define abs(x)
Definition: mlp_lapack.h:159
virtual double vy() const
y coordinate of vertex position
double charge(const std::vector< uint8_t > &Ampls)
float float float z
void tauola_forParticleGun(int tau_idx, int pdg_id, const HepMC::FourVector &particle_momentum)
void call_pylist(int mode)
double z() const
y coordinate
Definition: Vertex.h:99
virtual double vz() const
z coordinate of vertex position
double x() const
x coordinate
Definition: Vertex.h:95
tuple muons
Definition: patZpeak.py:38
void call_py1ent(int, int, double, double, double)
Definition: extraPythia.cc:4
static unsigned int const shift
virtual double vx() const
x coordinate of vertex position
tuple cout
Definition: gather_cfg.py:121
double pi
Definition: DDAxes.h:10
*vegas h *****************************************************used in the default bin number in original ***version of VEGAS is ***a higher bin number might help to derive a more precise ***grade subtle point
Definition: invegas.h:5
float ParticleReplacerParticleGun::randomPolarization ( )
private

Definition at line 427 of file ParticleReplacerParticleGun.cc.

References rand().

Referenced by tauHelicity().

427  {
428  uint32_t randomNumber = rand();
429  if(randomNumber%2 > 0.5) return 1;
430  return -1;
431 }
Signal rand(Signal arg)
Definition: vlib.cc:442
float ParticleReplacerParticleGun::tauHelicity ( int  pdg_id)
private

Definition at line 380 of file ParticleReplacerParticleGun.cc.

References forceTauMinusHelicity_, forceTauPlusHelicity_, forceTauPolarization_, pol1_, pol2_, and randomPolarization().

Referenced by tauola_forParticleGun().

380  {
381  /* tau polarization summary from Tauola source code:
382  in all cases W : pol1 = -1, pol2 = -1 (tau or neutrino)
383  H+: pol1 = +1, pol2 = +1 (tau or neutrino)
384 
385  if neutral higgs : pol1 = +1, pol2 = -1 OR pol1 = -1, pol2 = +1 (tau tau)
386  if Z or undetermined: pol1 = +1, pol2 = +1 OR pol1 = -1, pol2 = -1 (tau tau)
387  */
388 
389  if(pdg_id < 0) { // tau+
390  if(forceTauPlusHelicity_ != 0) {
391  return forceTauPlusHelicity_;
392  }
393  if(forceTauPolarization_ == "W") return -1;
394  if(forceTauPolarization_ == "H+") return 1;
395  if(pol2_[2] != 0) {
396  if(forceTauPolarization_ == "h" ||
397  forceTauPolarization_ == "H" ||
398  forceTauPolarization_ == "A") return -pol2_[2];
399  else return pol2_[2];
400  }
401  else {
402  return randomPolarization(); //all other cases random, when first tau
403  }
404  }
405  else { // tau-
406  if(forceTauMinusHelicity_ != 0) {
407  return forceTauMinusHelicity_;
408  }
409  if(forceTauPolarization_ == "W") return -1;
410  if(forceTauPolarization_ == "H+") return 1;
411  if(pol1_[2] != 0){
412  if(forceTauPolarization_ == "h" ||
413  forceTauPolarization_ == "H" ||
414  forceTauPolarization_ == "A") return -pol1_[2];
415  else return pol1_[2];
416  }
417  else {
418  return randomPolarization(); //all other cases random, when first tau
419  }
420  }
421 
422  edm::LogError("MuonReplacement") << "[ParticleReplacerAlgoParticleGun::tauHelicity] "
423  << "tauHelicity undetermined, returning 0" << std::endl;
424  return 0;
425 }
void ParticleReplacerParticleGun::tauola_forParticleGun ( int  tau_idx,
int  pdg_id,
const HepMC::FourVector &  particle_momentum 
)
private

Definition at line 308 of file ParticleReplacerParticleGun.cc.

References abs, pol1_, pol2_, and tauHelicity().

Referenced by produce().

308  {
309  if(abs(pdg_id) != 15) {
310  edm::LogError("MuonReplacement") << "[ParticleReplacerAlgoParticleGun::tauola_forParticleGuns] "
311  << "Trying to decay something else than tau: pdg_id = " << pdg_id << std::endl;
312  return;
313  }
314 
315  // By default the index of tau+ is 3 and tau- is 4. The TAUOLA
316  // routine takes internally care of finding the correct
317  // position of the tau which is decayed. However, since we are
318  // calling DEXAY routine directly by ourselves, we must set
319  // the index manually by ourselves. Fortunately, this seems to
320  // be simple.
321  /* FIXME
322  if(printout_)
323  std::cout << " Tauola taupos common block: np1 " << taupos.np1 << " np2 " << taupos.np2 << std::endl;
324  taupos.np1 = tau_idx;
325  taupos.np2 = tau_idx;
326  if(printout_)
327  std::cout << " Resetting taupos common block to: np1 " << taupos.np1 << " np2 " << taupos.np2 << std::endl;
328  */
329 
330  if(pdg_id == -15){ // tau+
331 
332  pol1_[2] = tauHelicity(pdg_id);
333 
334  /* FIXME
335  momdec.p1[0] = particle_momentum.x();
336  momdec.p1[1] = particle_momentum.y();
337  momdec.p1[2] = particle_momentum.z();
338  momdec.p1[3] = particle_momentum.e();
339 
340  momdec.p2[0] = -momdec.p1[0];
341  momdec.p2[1] = -momdec.p1[1];
342  momdec.p2[2] = -momdec.p1[2];
343  momdec.p2[3] = momdec.p1[3];
344 
345  // "mother" p4
346  momdec.q1[0] = 0;
347  momdec.q1[1] = 0;
348  momdec.q1[2] = 0;
349  momdec.q1[3] = momdec.p1[3] + momdec.p2[3];
350 
351  call_dexay(1,pol1);
352  */
353  }
354  else if (pdg_id == 15){ // tau-
355 
356  pol2_[2] = tauHelicity(pdg_id);
357 
358  /* FIXME
359  momdec.p2[0] = particle_momentum.x();
360  momdec.p2[1] = particle_momentum.y();
361  momdec.p2[2] = particle_momentum.z();
362  momdec.p2[3] = particle_momentum.e();
363 
364  momdec.p1[0] = -momdec.p2[0];
365  momdec.p1[1] = -momdec.p2[1];
366  momdec.p1[2] = -momdec.p2[2];
367  momdec.p1[3] = momdec.p2[3];
368 
369  // "mother" p4
370  momdec.q1[0] = 0;
371  momdec.q1[1] = 0;
372  momdec.q1[2] = 0;
373  momdec.q1[3] = momdec.p1[3] + momdec.p2[3];
374 
375  call_dexay(2,pol2);
376  */
377  }
378 }
#define abs(x)
Definition: mlp_lapack.h:159

Member Data Documentation

std::string ParticleReplacerParticleGun::forceTauDecay_
private
int ParticleReplacerParticleGun::forceTauMinusHelicity_
private

Definition at line 58 of file ParticleReplacerParticleGun.h.

Referenced by ParticleReplacerParticleGun(), and tauHelicity().

int ParticleReplacerParticleGun::forceTauPlusHelicity_
private

Definition at line 57 of file ParticleReplacerParticleGun.h.

Referenced by ParticleReplacerParticleGun(), and tauHelicity().

std::string ParticleReplacerParticleGun::forceTauPolarization_
private

Definition at line 53 of file ParticleReplacerParticleGun.h.

Referenced by ParticleReplacerParticleGun(), and tauHelicity().

std::string ParticleReplacerParticleGun::generatorMode_
private

Definition at line 55 of file ParticleReplacerParticleGun.h.

Referenced by ParticleReplacerParticleGun().

int ParticleReplacerParticleGun::gunParticle_
private

Definition at line 56 of file ParticleReplacerParticleGun.h.

Referenced by beginJob(), correctTauMass(), endJob(), and produce().

std::string ParticleReplacerParticleGun::particleOrigin_
private

Definition at line 52 of file ParticleReplacerParticleGun.h.

Referenced by produce().

float ParticleReplacerParticleGun::pol1_[4]
private
float ParticleReplacerParticleGun::pol2_[4]
private
bool ParticleReplacerParticleGun::printout_
private

Definition at line 63 of file ParticleReplacerParticleGun.h.

Referenced by produce().

gen::Pythia6Service ParticleReplacerParticleGun::pythia_
private

Definition at line 50 of file ParticleReplacerParticleGun.h.

Referenced by beginJob(), and produce().

gen::TauolaInterfaceBase* ParticleReplacerParticleGun::tauola_
private

Definition at line 49 of file ParticleReplacerParticleGun.h.

Referenced by ParticleReplacerParticleGun().