2
#include "Recon/EmittanceRecon/EmittanceHitCut.hh"
8
namespace EmittanceRecon {
10
cut_base::cut_base( hitParameter p, cutOperation o ) :
15
cut_base::cut_base( const cut_base& c ) :
16
_parameter( c._parameter ),
17
_operation( c._operation ) {
20
cut_base& cut_base::operator=( const cut_base& c ) {
21
this->_parameter = c._parameter;
22
this->_operation = c._operation;
29
///////////////////////////////////////////////////////////////////////////////
33
cut_base( cut_base::no_parameter, cut_base::no_operation ),
38
cut_int::cut_int( cut_base::hitParameter p, cut_base::cutOperation o,
45
cut_int::cut_int( const cut_int& c ) :
50
cut_int& cut_int::operator=( const cut_int& c ) {
51
cut_base::operator=( c );
52
this->_value = c._value;
56
cut_base* cut_int::copyMe() const {
57
return (cut_base*) new cut_int( *this );
60
bool cut_int::cutHit( emittanceHit hit ) const {
63
switch ( this->getParameter() ) {
65
parameter = hit.getTrackerNumber();
69
parameter = hit.getStationNumber();
73
parameter = hit.getPlaneNumber();
77
parameter = hit.getPID();
85
return this->switch_operation<int>( parameter, _value );
88
void cut_int::_check() {
89
switch ( this->getParameter() )
98
throw Exception( Exception::nonRecoverable,
99
"Attempting to cut a non integer parameter with an integer value",
100
"cut_int::cutHit()" );
104
if ( this->getOperation() == no_operation ||
105
this->getOperation() > less_equal ) {
106
throw Exception( Exception::nonRecoverable,
107
"Invalid Cut Operation Selected.",
108
"cut_int::cutHit()" );
120
cut_double::cut_double() :
121
cut_base( cut_base::no_parameter, cut_base::no_operation ),
126
cut_double::cut_double( cut_base::hitParameter p, cut_base::cutOperation o,
133
cut_double::cut_double( const cut_double& c ) :
138
cut_double& cut_double::operator=( const cut_double& c ) {
139
cut_base::operator=( c );
140
this->_value = c._value;
144
cut_base* cut_double::copyMe() const {
145
return (cut_base*) new cut_double( *this );
149
bool cut_double::cutHit( emittanceHit hit ) const {
150
double parameter = 0.0;
151
switch ( this->getParameter() ) {
153
parameter = hit.getPosition().x();
156
parameter = hit.getPosition().y();
159
parameter = hit.getPosition().z();
162
parameter = hit.getMomentum().x();
165
parameter = hit.getMomentum().y();
168
parameter = hit.getMomentum().z();
170
case trans_position :
171
parameter = std::sqrt( hit.getPosition().x()*hit.getPosition().x() +
172
hit.getPosition().y()*hit.getPosition().y() );
174
case trans_momentum :
175
parameter = std::sqrt( hit.getMomentum().x()*hit.getMomentum().x() +
176
hit.getMomentum().y()*hit.getMomentum().y() );
179
parameter = hit.getPosition().mag();
182
parameter = hit.getMomentum().mag();
186
parameter = hit.getPValue();
194
return this->switch_operation<double>( parameter, _value );
197
void cut_double::_check() {
198
switch( this->getParameter() )
206
case trans_position :
208
case trans_momentum :
214
throw Exception( Exception::nonRecoverable,
215
"Attempting to cut a non-double parameter with a double value",
216
"cut_double::cutHit()" );
220
if ( this->getOperation() == no_operation ||
221
this->getOperation() > less_equal ) {
222
throw Exception( Exception::nonRecoverable,
223
"Invalid Cut Operation Selected.",
224
"cut_int::cutHit()" );