00001
00002
00003
00004
00005
00006
00007
00008
00009
00011
00012 #ifndef UGLISCINTPLNNODE_H
00013 #define UGLISCINTPLNNODE_H
00014 class UgliScintPlnNode;
00015 class UgliScintPlnABC;
00016 class UgliPlnNode;
00017
00018 #include "UgliGeometry/Ugli.h"
00019 #include "UgliGeometry/UgliScintPlnABC.h"
00020 #include "UgliGeometry/UgliPlnNode.h"
00021 class UgliScintMdlNode;
00022 class UgliStripNode;
00023
00024 #include <map>
00025 class VldContext;
00026 class UgliStripNode;
00027 class UgliDbiTables;
00028
00029 class UgliScintPlnNode : public UgliScintPlnABC, public UgliPlnNode {
00030
00031 friend class UgliGeometry;
00032 friend class UgliGeometryReroot;
00033 friend class UgliScintPlnHandle;
00034
00035 public:
00036
00037
00038 virtual ~UgliScintPlnNode();
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050 virtual Int_t NumberOfStrips() const;
00051 virtual std::vector<UgliStripNode*> GetStripNodePtrVector() const;
00052 virtual std::vector<UgliScintMdlNode*> GetScintMdlNodePtrVector() const;
00053
00054
00055 virtual TVector3 GlobalToLocal(const TVector3& global) const;
00056 virtual TVector3 LocalToGlobal(const TVector3& local) const;
00057
00058 virtual UgliGeometry* GetUgliGeometry() const
00059 { return fUgliGeometry; }
00060
00061
00062 virtual UgliStripNode* GetStripNode(PlexStripEndId seid) const;
00063
00064 Float_t GetZRotRelSteelRad() const;
00065 Float_t GetX0RelSteel() const;
00066 Float_t GetY0RelSteel() const;
00067
00068 void SetZRotRelSteelRad(Float_t radians);
00069 void SetXY0RelSteel(Float_t x0, Float_t y0);
00070
00071 public:
00072
00073
00074
00075 UgliScintPlnNode();
00076
00077 protected:
00078
00079
00080 virtual void IncrementRef();
00081 virtual void DecrementRef();
00082
00083
00084 UgliScintPlnNode(const PlexPlaneId planeid, UgliGeometry* ugligeom,
00085 const UgliDbiTables& ugliTables);
00086
00087
00088 void TransformLocal2Global(Double_t *lxyz, Double_t *gxyz) const;
00089
00090
00091 void BuildStrips(const UgliDbiTables& ugliTables);
00092
00093 std::map<PlexStripEndId,UgliStripNode*> fStripTable;
00094
00095 private:
00096
00097
00098 UgliScintPlnNode(const UgliScintPlnNode& that);
00099 UgliScintPlnNode& operator=(const UgliScintPlnNode& ugh);
00100
00101 ClassDef(UgliScintPlnNode,1)
00102 };
00103
00104 #ifndef __CINT__
00105
00106
00107
00108
00109 inline void UgliScintPlnNode::SetXY0RelSteel(Float_t x0, Float_t y0)
00110 { SetPosition(x0,y0,0.0); }
00111
00112 inline Float_t UgliScintPlnNode::GetZRotRelSteelRad() const
00113 { return fMatrix->GetPhi()*Ugli::deg2rad; }
00114
00115 inline Float_t UgliScintPlnNode::GetX0RelSteel() const { return fX; }
00116 inline Float_t UgliScintPlnNode::GetY0RelSteel() const { return fY; }
00117
00118 #endif
00119 #endif // UGLISCINTPLNNODE_H