00001 /* Generated by Together */ 00002 00003 #include "TPadRpcEvent.h" 00004 #include "TGo4Version.h" 00005 #if __GO4BUILDVERSION__ > 40502 00006 #include "go4iostream.h" 00007 #else 00008 #include "Riostream.h" 00009 #endif 00010 00011 void PadRpc_Hit::Clear() 00012 { 00013 iPadIndexX = -1 ; 00014 iPadIndexY = -1 ; 00015 dTime = -1 ; 00016 dTot = -1 ; 00017 } 00018 00019 void PadRpc_Cluster::Clear() 00020 { 00021 fHits.clear(); 00022 dX = 0.0; 00023 dY = 0.0; 00024 dMeanTime = 0.0; 00025 dMeanPadX = 0.0; 00026 dMeanPadY = 0.0; 00027 } 00028 void PadRpc_Cluster::PositionCalculation( 00029 Double_t dMiddlePadX, Double_t dMiddlePadY, 00030 UInt_t uOrientation, 00031 Double_t dPadSizeX, Double_t dPadSizeY ) 00032 { 00033 Double_t dTotSum = 0.0; 00034 Double_t dMeanTot = 0.0; 00035 if( 0 == fHits.size() ) 00036 return; 00037 00038 if( 1 == uOrientation ) 00039 { 00040 dX = 0.0; 00041 dY = 0.0; 00042 dMeanTime = 0; 00043 dMeanPadX = 0; 00044 dMeanPadY = 0; 00045 for( UInt_t uHit = 0; uHit < fHits.size(); uHit++) 00046 { 00047 //dMeanTot = (fHits[uHit].dTotLeft ) + (fHits[uHit].dTotRight ); // Weighted 00048 dMeanTot = 1; // Not Weighted 00049 // Along Pad axis: Strip Index + 0.5 to sit in the middle of the Pad! 00050 dX += (Double_t)(fHits[uHit].iPadIndexY + 0.5)*dMeanTot; 00051 dY += (Double_t)(fHits[uHit].iPadIndexX + 0.5)*dMeanTot; 00052 dMeanTime += fHits[uHit].dTime ; 00053 dTotSum += dMeanTot; 00054 dMeanPadX += (Double_t)(fHits[uHit].iPadIndexX)*dMeanTot; 00055 dMeanPadY += (Double_t)(fHits[uHit].iPadIndexY)*dMeanTot; 00056 } // for( UInt_t uHit = 0; uHit < fHits.size(); uHit++) 00057 dX = (dX/dTotSum)*dPadSizeY -dMiddlePadY; 00058 dY = (dY/dTotSum)*dPadSizeX -dMiddlePadX; 00059 dMeanTime /= fHits.size(); 00060 dMeanPadX /= dTotSum; 00061 dMeanPadY /= dTotSum; 00062 } // if( 1 == uOrientation ) 00063 else 00064 { 00065 dX = 0.0; 00066 dY = 0.0; 00067 dMeanTime = 0; 00068 dMeanPadX = 0; 00069 dMeanPadY = 0; 00070 for( UInt_t uHit = 0; uHit < fHits.size(); uHit++) 00071 { 00072 //dMeanTot = (fHits[uHit].dTotLeft ) + (fHits[uHit].dTotRight ); // Weighted 00073 dMeanTot = 1; // Not Weighted 00074 // Along Pad axis: Strip Index + 0.5 to sit in the middle of the Pad! 00075 dX += (Double_t)(fHits[uHit].iPadIndexX + 0.5)*dMeanTot; 00076 dY += (Double_t)(fHits[uHit].iPadIndexY + 0.5)*dMeanTot; 00077 dMeanTime += fHits[uHit].dTime ; 00078 dTotSum += dMeanTot; 00079 dMeanPadX += (Double_t)(fHits[uHit].iPadIndexX)*dMeanTot; 00080 dMeanPadY += (Double_t)(fHits[uHit].iPadIndexY)*dMeanTot; 00081 } // for( UInt_t uHit = 0; uHit < fHits.size(); uHit++) 00082 dX = (dX/dTotSum)*dPadSizeX -dMiddlePadX; 00083 dY = (dY/dTotSum)*dPadSizeY -dMiddlePadY; 00084 dMeanTime /= fHits.size(); 00085 dMeanPadX /= dTotSum; 00086 dMeanPadY /= dTotSum; 00087 } // else of if( 1 == uOrientation ) 00088 } 00089 00090 TPadRpcEvent::TPadRpcEvent(const char* name, Short_t id) : 00091 TGo4EventElement(name,name,id) 00092 { 00093 cout << "**** TPadRpcEvent: Create instance " << name <<" with composite id "<<id<< endl; 00094 } 00095 TPadRpcEvent::TPadRpcEvent() : 00096 TGo4EventElement() 00097 { 00098 } 00099 00100 TPadRpcEvent::~TPadRpcEvent() 00101 { 00102 } 00103 00104 void TPadRpcEvent::Clear(Option_t *t) 00105 { 00106 // all members should be cleared. 00107 fClusters.clear(); 00108 SetValid(kFALSE); 00109 } 00110