64 Devices.push_back(dev.
Clone());
69 useNM = s.Contains(
"nm") || s.Contains(
"null");
70 useJB = s.Contains(
"jb") || s.Contains(
"jacquet");
71 useDA = s.Contains(
"da") || s.Contains(
"double");
76 if (
unsigned(n) < Devices.size()) {
77 smearer = Devices.at(n);
83 if (!(useNM || useJB || useDA)) {
92 typedef std::auto_ptr<erhic::DisKinematics> KinPtr;
93 if (useNM && scattered) {
108 if (useDA && scattered) {
117 std::list<Smearer*> devices;
121 std::vector<Smearer*>::const_iterator iter;
122 for (iter = Devices.begin(); iter != Devices.end(); ++iter) {
124 if ((*iter)->Accept.Is(p)) {
125 devices.push_back(*iter);
135 std::list<Smearer*> devices =
Accept(prt);
137 if (!devices.empty()) {
141 std::list<Smearer*>::iterator iter;
142 for (iter = devices.begin(); iter != devices.end(); ++iter) {
143 (*iter)->Smear(prt, *prtOut);
146 prtOut->
px = prtOut->
p * sin(prtOut->
theta) * cos(prtOut->
phi);
147 prtOut->
py = prtOut->
p * sin(prtOut->
theta) * sin(prtOut->
phi);
148 prtOut->
pt = sqrt(pow(prtOut->
px, 2.) + pow(prtOut->
py, 2.));
149 prtOut->
pz = prtOut->
p * cos(prtOut->
theta);
155 std::vector<Smearer*> copies;
156 std::transform(Devices.begin(), Devices.end(),
157 std::back_inserter(copies),
164 Devices.at(i)->Print(o);
std::list< Smear::Smearer * > Accept(const erhic::VirtualParticle &) const
std::vector< Smear::Smearer * > CopyDevices() const
virtual Smearer * Clone(const char *="") const =0
virtual void SetLeptonKinematics(const DisKinematics &)
Double32_t phi
Azimuthal angle.
virtual void SetJacquetBlondelKinematics(const DisKinematics &)
ParticleMCS * Smear(const erhic::VirtualParticle &) const
virtual UShort_t GetStatus() const =0
virtual void SetDoubleAngleKinematics(const DisKinematics &)
void AddDevice(Smearer &device)
Double32_t py
y component of particle momentum
Double32_t p
Total momentum of particle.
void FillEventKinematics(Event *event)
Smearer * GetDevice(int index)
Double32_t px
x component of particle momentum
virtual const ParticleMCS * ScatteredLepton() const
UInt_t GetNDevices() const
Double32_t pt
Transverse momentum of particle.
virtual void Print(Option_t *="") const
void SetEventKinematicsCalculator(TString)
Double32_t pz
z component of particle momentum
Abstract base class for a general particle.
Detector & operator=(const Detector &)
Double32_t theta
Polar angle.