00001 #include "StiDefaultTrackFilter.h"
00002
00003 #include <stdexcept>
00004 #include <string>
00005 using std::string;
00006 #include "Sti/Base/Parameter.h"
00007 #include "Sti/Base/EditableParameter.h"
00008 #include "Sti/StiTrack.h"
00009 #include "StiDefaultTrackFilter.h"
00010
00011 StiDefaultTrackFilter::StiDefaultTrackFilter()
00012 : EditableFilter<StiTrack>()
00013 {}
00014
00015 StiDefaultTrackFilter::StiDefaultTrackFilter(const string & name, const string & description)
00016 : EditableFilter<StiTrack>(name,description)
00017 {}
00018
00019
00020 StiDefaultTrackFilter::~StiDefaultTrackFilter()
00021 {}
00022
00023 void StiDefaultTrackFilter::initialize()
00024 {
00025 cout << "StiDefaultTrackFilter::initialize() - INFO - Starting" << endl;
00026 parameterVector.clear();
00027 add(new EditableParameter("Chi2Used", "Use Chi2", false, false, 0,1,1,Parameter::Boolean, StiTrack::kChi2));
00028 add(new EditableParameter("Chi2Min", "Minimum Chi2", 0., 0., 0., 100.,1,Parameter::Double, StiTrack::kChi2));
00029 add(new EditableParameter("Chi2Max", "Maximum Chi2", 20., 20., 0., 100.,1,Parameter::Double, StiTrack::kChi2));
00030
00031 add(new EditableParameter("PhiUsed", "Use Phi", false, false, 0,1,1,Parameter::Boolean, StiTrack::kPhi));
00032 add(new EditableParameter("PhiMin", "Minimum Phi", -3.2, -3.2, -3.2, 3.2, 2,Parameter::Double, StiTrack::kPhi));
00033 add(new EditableParameter("PhiMax", "Maximum Phi", 3.2, 3.2, -3.2, 3.2, 2,Parameter::Double, StiTrack::kPhi));
00034
00035 add(new EditableParameter("PtUsed", "Use Pt", true, true, 0,1,1,Parameter::Boolean, StiTrack::kPt));
00036 add(new EditableParameter("PtMin", "Minimum Pt", 0.1, 0.1, 0., 100.,2,Parameter::Double, StiTrack::kPt));
00037 add(new EditableParameter("PtMax", "Maximum Pt", 10., 10., 0., 100.,2,Parameter::Double, StiTrack::kPt));
00038
00039 add(new EditableParameter("PUsed", "Use P", false, false, 0,1,1,Parameter::Boolean, StiTrack::kP));
00040 add(new EditableParameter("PMin", "Minimum P", 0., 0., 0., 100.,2,Parameter::Double, StiTrack::kP));
00041 add(new EditableParameter("PMax", "Maximum P", 10., 10., 0., 100.,2,Parameter::Double, StiTrack::kP));
00042
00043 add(new EditableParameter("EtaUsed", "Use Eta", true, true, 0,1,1,Parameter::Boolean, StiTrack::kPseudoRapidity));
00044 add(new EditableParameter("EtaMin", "Minimum Eta", -0.5, -0.5, -10., 10.,2,Parameter::Double, StiTrack::kPseudoRapidity));
00045 add(new EditableParameter("EtaMax", "Maximum Eta", 0.5, 0.5, -10., 10.,2,Parameter::Double, StiTrack::kPseudoRapidity));
00046
00047 add(new EditableParameter("nPtsUsed", "Use nPts", true, true, 0,1,1,Parameter::Boolean, StiTrack::kPointCount));
00048 add(new EditableParameter("nPtsMin", "Minimum nPts", 10., 10., 0., 100.,1,Parameter::Integer, StiTrack::kPointCount));
00049 add(new EditableParameter("nPtsMax", "Maximum nPts", 60., 60., 0., 100.,1,Parameter::Integer, StiTrack::kPointCount));
00050
00051 add(new EditableParameter("nGapsUsed","Use nGaps", true, true, 0,1,1,Parameter::Boolean, StiTrack::kGapCount));
00052 add(new EditableParameter("nGapsMin", "Minimum nGaps", 0., 0., 0., 100.,1,Parameter::Integer, StiTrack::kGapCount));
00053 add(new EditableParameter("nGapsMax", "Maximum nGaps", 3., 3., 0., 100.,1,Parameter::Integer, StiTrack::kGapCount));
00054
00055 add(new EditableParameter("chargeUsed","Use Charge", false, false, 0,1,1,Parameter::Boolean, StiTrack::kCharge));
00056 add(new EditableParameter("chargeMin", "Minimum Charge", -1., -1., -100., 100.,1,Parameter::Integer, StiTrack::kCharge));
00057 add(new EditableParameter("chargeMax", "Maximum Charge", 1., 1., -100., 100.,1,Parameter::Integer, StiTrack::kCharge));
00058 }
00059
00060
00061 bool StiDefaultTrackFilter::accept(const StiTrack * t) const
00062 {
00063
00064 double v,low,high;
00065 ParameterConstIterator iter = begin();
00066 Parameter * parUse;
00067 Parameter * parLow;
00068 Parameter * parHi;
00069 while (iter!=end())
00070 {
00071 parUse = *iter; iter++;
00072 parLow = *iter; iter++;
00073 parHi = *iter; iter++;
00074 if (parUse&&parLow&&parHi)
00075 {
00076 if (parUse->getBoolValue())
00077 {
00078
00079 v = t->getValue(parUse->getKey());
00080 low = parLow->getDoubleValue();
00081 high = parHi->getDoubleValue();
00082 if (v<low || v>high)
00083 {
00084
00085 return false;
00086 }
00087 }
00088 }
00089 else
00090 throw runtime_error("StiDefaultTrackFilter::accept(const StiTrack * t) -E- Internal error");
00091 }
00092
00093 return true;
00094 }
00095
00096
00097 void StiDefaultTrackFilter::setDefaults()
00098 {}
00099