00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00015
00016 #include "AlTrack.h"
00017 #include "AlMCtruth.h"
00018 #include "AlephCollection.h"
00019
00020
00021 AlTrack::AlTrack()
00022 {
00023 theEflw = NULL;
00024 Match = new AlephCollection<AlMCtruth*>;
00025 }
00026
00027
00028 AlTrack::AlTrack(const AlTrack& oldAt):QvecLink(oldAt)
00029 {
00030 Match = new AlephCollection<AlMCtruth*>;
00031 *Match = *(oldAt.Match);
00032 }
00033
00034
00035 AlTrack& AlTrack::operator=(const AlTrack& oldAt)
00036 {
00037 *Match = *(oldAt.Match);
00038 theEflw = oldAt.theEflw;
00039 _A4V = oldAt._A4V;
00040 oVertex = oldAt.oVertex;
00041 eVertex = oldAt.eVertex;
00042 _locked = oldAt._locked;
00043 _qch = oldAt._qch;
00044 return *this;
00045 }
00046
00047
00048 AlTrack::~AlTrack()
00049 {
00050 delete Match;
00051 }
00052
00060 float AlTrack::SIG(int x) const{ return qvec -> EM[x-1];}
00061 float AlTrack::SIGEE() const { return SIG(10);}
00062 float AlTrack::SIGPP() const { return
00063 ( QX()*QX()*SIG(1) +
00064 QY()*QY()*SIG(3) +
00065 QZ()*QZ()*SIG(6) +
00066 2*( QX()*( QY()*SIG(2) + QZ()*SIG(4) ) + QY()*QZ()*SIG(5) ) ) / (QP()*QP()); }
00067
00068
00069 float AlTrack::SIGMM() const { return
00070 ( QM()*
00071 ( QE()*QE()*SIG(10) +
00072 QX()*QX()*SIG(1) +
00073 QY()*QY()*SIG(3) +
00074 QZ()*QZ()*SIG(6) +
00075 2*( QX()*( QY()*SIG(2) + QZ()*SIG(4) ) + QY()*QZ()*SIG(5) - QE()*(QX()*SIG(7) + QY()*SIG(8) + QZ()*SIG(9)) ) ) ); }
00076
00077 int AlTrack::NV() const{ if ( qvec -> QD != NULL && qvec -> QD -> AL != NULL )
00078 return qvec -> QD -> AL -> NV;
00079 else
00080 return -1;}
00081 int AlTrack::NI() const{ if ( qvec -> QD != NULL && qvec -> QD -> AL != NULL )
00082 return qvec -> QD -> AL -> NI;
00083 else
00084 return -1; }
00085 int AlTrack::NT() const{
00086 if ( qvec -> QD != NULL && qvec -> QD -> AL != NULL )
00087 return qvec -> QD -> AL -> NT;
00088 else {
00089 return -1; }}
00090 int AlTrack::NE() const{ if ( qvec -> QD != NULL && qvec -> QD -> AL != NULL )
00091 return qvec -> QD -> AL -> NE;
00092 else
00093 return -1; }
00094 int AlTrack::NR() const{ if ( qvec -> QD != NULL && qvec -> QD -> AL != NULL )
00095 return qvec -> QD -> AL -> NR;
00096 else
00097 return -1; }
00098
00099 float AlTrack::IR() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00100 return qvec -> QD -> AF -> IR;
00101 else
00102 return -1; }
00103 float AlTrack::TL() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00104 return qvec -> QD -> AF -> TL;
00105 else
00106 return -1; }
00107 float AlTrack::P0() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00108 return qvec -> QD -> AF -> P0;
00109 else
00110 return -1; }
00111 float AlTrack::D0() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00112 return qvec -> QD -> AF -> D0;
00113 else
00114 return -1; }
00115 float AlTrack::Z0() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00116 return qvec -> QD -> AF -> Z0;
00117 else
00118 return -1; }
00119 float AlTrack::AL() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00120 return qvec -> QD -> AF -> AL;
00121 else
00122 return -1; }
00132 float AlTrack::EM(int x) const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00133 return qvec -> QD -> AF -> EM[x-1];
00134 else
00135 return -1;}
00136 float AlTrack::C2() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00137 return qvec -> QD -> AF -> C2;
00138 else
00139 return -1; }
00140 int AlTrack::DF() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00141 return qvec -> QD -> AF -> DF;
00142 else
00143 return -1; }
00158 int AlTrack::NO() const{ if ( qvec -> QD != NULL && qvec -> QD -> AF != NULL )
00159 return qvec -> QD -> AF -> NO;
00160 else
00161 return -1; }
00162
00163 int AlTrack::SI(int seg) const{ if ( qvec -> QD != NULL && qvec -> QD -> AF !=NULL && seg < (qvec -> QD -> NT))
00164 return qvec -> QD -> AT[seg] -> SI;
00165 else
00166 return -1; }
00167 float AlTrack::TM(int seg) const{ if ( qvec -> QD != NULL && qvec -> QD -> AF !=NULL && seg < (qvec -> QD -> NT))
00168 return qvec -> QD -> AT[seg] -> TM;
00169 else
00170 return -1; }
00171 float AlTrack::TL2(int seg) const{ if ( qvec -> QD != NULL && qvec -> QD -> AF !=NULL && seg < (qvec -> QD -> NT))
00172 return qvec -> QD -> AT[seg] -> TL;
00173 else
00174 return -1; }
00175 int AlTrack::NS(int seg) const{ if ( qvec -> QD != NULL && qvec -> QD -> AF !=NULL && seg < (qvec -> QD -> NT))
00176 return qvec -> QD -> AT[seg] -> NS;
00177 else
00178 return -1; }
00179 float AlTrack::AD(int seg) const{ if ( qvec -> QD != NULL && qvec -> QD -> AF !=NULL && seg < (qvec -> QD -> NT))
00180 return qvec -> QD -> AT[seg] -> AD;
00181 else
00182 return -1; }
00183 int AlTrack::TN(int seg) const{ if ( qvec -> QD != NULL && qvec -> QD -> AF !=NULL && seg < (qvec -> QD -> NT))
00184 return qvec -> QD -> AT[seg] -> TN;
00185 else
00186 return -1; }
00187 int AlTrack::SF(int seg) const{ if ( qvec -> QD != NULL && qvec -> QD -> AF !=NULL && seg < (qvec -> QD -> NT))
00188 return qvec -> QD -> AT[seg] -> SF;
00189 else
00190 return -1; }
00191 float AlTrack::TMmean() const{ float TMtmp=0;
00192 for (int i=0;i< (qvec -> QD -> NT);i++) TMtmp+=TM(i);
00193 TMtmp/=(qvec -> QD -> NT);
00194 return TMtmp; }
00195 float AlTrack::TL2sum() const{ float TL2tmp=0;
00196 for (int i=0;i< (qvec -> QD -> NT);i++) TL2tmp+=TL2(i);
00197 return TL2tmp; }
00198 int AlTrack::NSsum() const{ int NStmp=0;
00199 for (int i=0;i< (qvec -> QD -> NT);i++) NStmp+=NS(i);
00200 return NStmp; }
00201 float AlTrack::ADmean() const{ float ADtmp=0;
00202 for (int i=0;i< (qvec -> QD -> NT);i++) ADtmp+=AD(i);
00203 ADtmp/=(qvec -> QD -> NT);
00204 return ADtmp; }
00205
00206
00207
00208 void AlTrack::setMatchingVector( AlephCollection< AlMCtruth* >& VectorOfTracks )
00209 {
00210 (*Match) = VectorOfTracks;
00211 }
00212
00213
00214
00215 AlephCollection<AlMCtruth*>* AlTrack::getMatchingVector() const
00216 {
00217 return (AlephCollection<AlMCtruth*>*) Match;
00218 }
00219
00220
00221
00222