Main Page   Namespace List   Class Hierarchy   Alphabetical List   Compound List   File List   Namespace Members   Compound Members   File Members  

AlTrack.cpp

Go to the documentation of this file.
00001 
00002 //
00003 // Implementation of
00004 // CLASS AlTrack:
00005 // Concrete class for Tracks, inherits from QvecBase
00006 // NOTE: STILL DEPENDS ALSO ON ALPHA BANKS d:-(
00007 //
00008 // Author :  G. Bagliesi
00009 // modified by:  C. Delaere, V. Lemaitre, O. van der Aa :
00010 //                - now inherit form QvecLink
00011 //                - link to new banks using Rick's stuff
00012 //                - fixed assignement operator
00013 //
00015 
00016 #include "AlTrack.h"
00017 #include "AlMCtruth.h"                 // Added by Rick
00018 #include "AlephCollection.h"               // Added by Rick
00019 
00020 // default constructor : 
00021 AlTrack::AlTrack()
00022 {
00023  theEflw = NULL;
00024  Match = new AlephCollection<AlMCtruth*>;
00025 }
00026 
00027 // copy constructor 
00028 AlTrack::AlTrack(const AlTrack& oldAt):QvecLink(oldAt) 
00029 {
00030  Match = new AlephCollection<AlMCtruth*>;
00031  *Match = *(oldAt.Match);
00032 }
00033 
00034 // assignement operator 
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 // destructor
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 // set the assoc. track
00208 void AlTrack::setMatchingVector( AlephCollection< AlMCtruth* >& VectorOfTracks )
00209  {
00210          (*Match) = VectorOfTracks;
00211  }
00212  
00213 /*--------------------------------------------------------------------------*/
00214 // get the assoc. track
00215 AlephCollection<AlMCtruth*>* AlTrack::getMatchingVector() const
00216  {
00217   return (AlephCollection<AlMCtruth*>*) Match;
00218  }
00219 /*--------------------------------------------------------------------------*/
00220 
00221 
00222 

Generated at Wed Jun 18 17:19:11 2003 for ALPHA++ by doxygen1.2.8.1 written by Dimitri van Heesch, © 1997-2001