Go to the documentation of this file.00001
00002
00003 #include "TRpcEvent.h"
00004 #include "TGo4Version.h"
00005 #if __GO4BUILDVERSION__ > 40502
00006 #include "go4iostream.h"
00007 #else
00008 #include "Riostream.h"
00009 #endif
00010
00011 void Rpc_Hit::Clear()
00012 {
00013 iStrip = -1 ;
00014 dTimeLeft = -1 ;
00015 dTotLeft = -1 ;
00016 dTimeRight = -1 ;
00017 dTotRight = -1 ;
00018 }
00019 Double_t Rpc_Hit::PositionCalculation( Double_t dTimeConv )
00020 {
00021 return (dTimeRight - dTimeLeft)*dTimeConv/1000.0;
00022 }
00023
00024 void Rpc_Cluster::Clear()
00025 {
00026 fHits.clear();
00027 dX = 0.0;
00028 dY = 0.0;
00029 dMeanTime = 0.0;
00030 }
00031 void Rpc_Cluster::PositionCalculation(
00032 Double_t dMiddleStrip, UInt_t uOrientation,
00033 Double_t dStripWidth, Double_t dTimeConv,
00034 UInt_t uUseGravityCenter )
00035 {
00036 Double_t dTotSum = 0.0;
00037 Double_t dMeanTot = 0.0;
00038 if( 0 == fHits.size() )
00039 return;
00040
00041 if( 1 == uOrientation )
00042 {
00043 dX = 0.0;
00044 dY = 0.0;
00045 dMeanTime = 0;
00046 dMeanStrip= 0;
00047 for( UInt_t uHit = 0; uHit < fHits.size(); uHit++)
00048 {
00049 if( 1 == uUseGravityCenter )
00050 dMeanTot = (fHits[uHit].dTotLeft ) + (fHits[uHit].dTotRight );
00051 else dMeanTot = 1;
00052
00053 dX += (Double_t)(fHits[uHit].iStrip + 0.5)*dMeanTot;
00054 dY += ( (fHits[uHit].dTimeRight) - (fHits[uHit].dTimeLeft) )*dMeanTot;
00055 dMeanTime += ( (fHits[uHit].dTimeRight) + (fHits[uHit].dTimeLeft) )/2.0;
00056 dTotSum += dMeanTot;
00057 dMeanStrip += (Double_t)(fHits[uHit].iStrip)*dMeanTot;
00058 }
00059 dX = (dX/dTotSum)*dStripWidth -dMiddleStrip;
00060 dY *= dTimeConv/(1000.0*dTotSum);
00061 dMeanTime /= fHits.size();
00062 dMeanStrip /= dTotSum;
00063
00064
00065
00066
00067
00068
00069
00070 }
00071 else
00072 {
00073 dX = 0.0;
00074 dY = 0.0;
00075 dMeanTime = 0;
00076 dMeanStrip= 0;
00077 for( UInt_t uHit = 0; uHit < fHits.size(); uHit++)
00078 {
00079 if( 1 == uUseGravityCenter )
00080 dMeanTot = (fHits[uHit].dTotLeft ) + (fHits[uHit].dTotRight );
00081 else dMeanTot = 1;
00082 dX += ( (fHits[uHit].dTimeRight) - (fHits[uHit].dTimeLeft) )*dMeanTot;
00083
00084 dY += (Double_t)(fHits[uHit].iStrip + 0.5)*dMeanTot;
00085 dMeanTime += ( (fHits[uHit].dTimeRight) + (fHits[uHit].dTimeLeft) )/2.0;
00086 dTotSum += dMeanTot;
00087 dMeanStrip += (Double_t)(fHits[uHit].iStrip)*dMeanTot;
00088 }
00089 dX *= dTimeConv/(1000.0*dTotSum);
00090 dY = (dY/dTotSum)*dStripWidth -dMiddleStrip;
00091
00092 dMeanTime /= fHits.size();
00093 dMeanStrip /= dTotSum;
00094 }
00095 }
00096
00097 TRpcEvent::TRpcEvent(const char* name, Short_t id) :
00098 TGo4EventElement(name,name,id)
00099 {
00100 cout << "**** TRpcEvent: Create instance " << name <<" with composite id "<<id<< endl;
00101 }
00102 TRpcEvent::TRpcEvent() :
00103 TGo4EventElement()
00104 {
00105 }
00106
00107 TRpcEvent::~TRpcEvent()
00108 {
00109 }
00110
00111 void TRpcEvent::Clear(Option_t *t)
00112 {
00113
00114 fClusters.clear();
00115 SetValid(kFALSE);
00116 }
00117