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