1 #include <algo/inc/paramsignificance.h>
4 #include <inc/trackstate.h>
6 #include <util/inc/helixrep.h>
7 #include <util/inc/projection.h>
8 #include <util/inc/string.h>
24 _AllbutOneLayersMomentumCut = 2;
25 _AllLayersMomentumCut = 1;
26 _ParameterNames.push_back(
"LayersHit");
27 _ParameterNames.push_back(
"AllbutOneLayersMomentumCut");
28 _ParameterNames.push_back(
"AllLayersMomentumCut");
42 return _ParameterNames;
47 _ParameterValues.clear();
48 _ParameterValues.push_back(makeString(_LayersHit));
49 _ParameterValues.push_back(makeString(_AllbutOneLayersMomentumCut));
50 _ParameterValues.push_back(makeString(_AllLayersMomentumCut));
51 _ParameterValues.push_back(makeString(_TwoTrackPidCut));
52 return _ParameterValues;
57 this->badParameter(Parameter);
63 if (Parameter ==
"LayersHit")
68 if (Parameter ==
"AllbutOneLayersMomentumCut")
70 _AllbutOneLayersMomentumCut = Value;
73 if (Parameter ==
"AllLayersMomentumCut")
75 _AllLayersMomentumCut = Value;
78 this->badParameter(Parameter);
83 if (Parameter ==
"TwoTrackPidCut")
85 _TwoTrackPidCut = (std::map<PidCutType,std::vector<vertex_lcfi::Track*> >*) Value;
87 else this->badParameter(Parameter);
93 double maxsig2 = -100;
100 double mommin4 = _AllbutOneLayersMomentumCut;
101 double mommin5 = _AllLayersMomentumCut;
102 std::map<SignificanceType,double> ResultMap;
104 for (std::vector<Track*>::const_iterator iTrack= (MyJet->
tracks().begin()); iTrack != (MyJet->
tracks().end()) ;++iTrack)
106 momentum = (*iTrack)->momentum().mag();
108 if ( (momentum > mommin4 && (*iTrack)->hitsInSubDetectors()[0] == (_LayersHit-1))|| (momentum > mommin5 && (*iTrack)->hitsInSubDetectors()[0] >= _LayersHit ))
113 std::vector<Track*>::const_iterator iTrack2 = find((*_TwoTrackPidCut)[Gamma].begin(),(*_TwoTrackPidCut)[Gamma].end(), (*iTrack));
114 std::vector<Track*>::const_iterator iTrack3 = find((*_TwoTrackPidCut)[KShort].begin(),(*_TwoTrackPidCut)[KShort].end(), (*iTrack));
117 if(iTrack3 == (*_TwoTrackPidCut)[KShort].end() && iTrack2 == (*_TwoTrackPidCut)[Gamma].end() )
119 double d0significance = (*iTrack)->signedSignificance(RPhi,MyJet);
120 double z0significance = (*iTrack)->signedSignificance(Z,MyJet);
122 if (d0significance > maxsig)
127 maxsig = d0significance;
129 maxz0 = z0significance;
131 else if(d0significance > maxsig2)
133 maxsig2 = d0significance;
135 maxz02 = z0significance;
143 ResultMap[D0SigTrack1] = maxsig;
144 ResultMap[D0SigTrack2] = maxsig2;
145 ResultMap[Z0SigTrack1] = maxz0;
146 ResultMap[Z0SigTrack2] = maxz02;
147 ResultMap[MomentumTrack1] = maxmom;
148 ResultMap[MomentumTrack2] = maxmom2;
std::map< SignificanceType, double > calculateFor(Jet *MyJet) const
Run the algorithm on a jet.
ParameterSignificance()
Constructor.
void setDoubleParameter(const string &Parameter, const double Value)
Set Double Parameter.
std::vector< string > parameterNames() const
Parameter Names.
const std::vector< Track * > & tracks() const
Tracks.
std::vector< string > parameterValues() const
Parameter Values.
void setStringParameter(const string &Parameter, const string &Value)
Set String Parameter.
string name() const
Name.
void setPointerParameter(const string &Parameter, void *Value)
Set Pointer Parameter.