00001 #ifndef RPC_EVENT_H 00002 #define RPC_EVENT_H 00003 00004 #ifdef WITHGO4ROC 00005 #include "TGo4EventElement.h" 00006 #else 00007 #include "Riostream.h" 00008 #include "TObject.h" 00009 #include <vector> 00010 #endif // WITHGO4ROC 00011 00012 class Rpc_Hit: public TObject { 00013 public: 00014 Int_t iStrip; 00015 Double_t dTimeLeft; // in ps 00016 Double_t dTotLeft; // in ps 00017 Double_t dTimeRight; // in ps 00018 Double_t dTotRight; // in ps 00019 Bool_t fbMultiEdge; 00020 00021 Rpc_Hit() : TObject() { Clear(); }; 00022 00023 void Clear(void); 00024 00025 Double_t PositionCalculation( Double_t dTimeConv ); 00026 Bool_t IsMultiEdge() const { return fbMultiEdge; }; 00027 00028 /* 00029 // copy constructor, used by vector to copy content for sorting 00030 Rpc_Hit(const Rpc_Hit& src) : 00031 iStrip(src.iStrip), 00032 dTimeLeft(src.dTimeLeft), dTotLeft(src.dTotLeft), 00033 dTimeRight(src.dTimeRight), dTotRight(src.dTotRight) {} 00034 */ 00035 00036 ClassDef(Rpc_Hit, 2) 00037 }; 00038 00039 class Rpc_Cluster: public TObject { 00040 public: 00041 std::vector<Rpc_Hit> fHits; 00042 Double_t dX; 00043 Double_t dY; 00044 Double_t dMeanTime; 00045 Double_t dMeanStrip; 00046 00047 Rpc_Cluster() : TObject() { Clear(); }; 00048 00049 void Clear(void); 00050 00051 void PositionCalculation( Double_t dMiddleStrip, UInt_t uOrientation, 00052 Double_t dStripWidth, Double_t dTimeConv, 00053 UInt_t uUseGravityCenter = 0); 00054 00055 00056 ClassDef(Rpc_Cluster, 1) 00057 }; 00058 00059 class Rpc_Event: public TObject { 00060 public: 00061 00062 // Maybe to be transformed into a TObjArray or TCloneArray 00063 std::vector<Rpc_Cluster> fClusters; 00064 UInt_t fuEventNumber; 00065 Bool_t fbMultiEdgesPresent; 00066 00067 Rpc_Event() : TObject() { Clear(); }; 00068 ~Rpc_Event(){ Clear(); }; 00069 00070 void Clear(void); 00071 Bool_t IsMultiEdge() const { return fbMultiEdgesPresent; }; 00072 00073 ClassDef(Rpc_Event, 2) 00074 }; 00075 #endif //RPC_EVENT_H