00001 00002 // // 00003 //authors: Costas Andreopoulos, Elias Athanasopoulos, George Tzanakos// 00004 // Physics Department, University of Athens // 00005 // October 28, 1999 // 00007 00008 #ifndef BFLVOROPERATOR_H 00009 #define BFLVOROPERATOR_H 00010 00011 #include <iostream> 00012 #include <TMath.h> 00013 #include "TVector2.h" 00014 #include "TObjArray.h" 00015 00016 //#include "BField/TIntList.h" 00017 //#include "BField/BFLNode.h" 00018 00019 class TIntList; 00020 class BFLNode; 00021 class BFLWingedEdge; 00022 class BFLVtx; 00023 class BFLPolyg; 00024 class BFLEdge; 00025 00026 class BFLVorOperator: public TObject 00027 { 00028 public: 00029 00030 BFLVorOperator() { } 00031 BFLVorOperator(BFLWingedEdge * vor); 00032 ~BFLVorOperator(); 00033 00034 TIntList * RetrieveEdgesIncidentToVtx(Int_t vtx) const; 00035 TIntList * RetrievePolygonsIncidentToVtx(Int_t vtx) const; 00036 TIntList * RetrieveEdgesSurrPolygon(Int_t poly) const; 00037 TIntList * RetrieveVtxSurrPolygon(Int_t poly) const; 00038 00039 Int_t IsInTheCircle(TObjArray * CirclePoints, BFLNode * point) const; 00040 BFLNode VtxPosition(TObjArray * PointsOnCircle) const; 00041 BFLNode FindNewVtx(Int_t EdgeID) const; 00042 Int_t FindCurrentPolygon(Int_t GuessedID = -1) const; 00043 Int_t MoveToNextPolygon(Int_t PolygID, Int_t EdgeID) const; 00044 Bool_t EdgeHasNewVtx(Int_t EdgeID) const; 00045 Bool_t EdgeIsInsideNewPolygon(Int_t EdgeID) const; 00046 Bool_t VtxIsInsideNewPolyg(Int_t VtxID) const; 00047 void ResetVtxCache(void); 00048 Float_t GeneratorsDist(Int_t igen, Int_t jgen) const; 00049 Float_t DistanceFrom(Int_t igen) const; 00050 Int_t GetFirstIntersectEdge(void) const; 00051 Int_t GetNextIntersectEdge(Int_t PrEdgeID) const; 00052 Int_t Clockwise(BFLNode * nA, BFLNode * nB, BFLNode * nC) const; 00053 00054 virtual void SetCurrentPolygID(Int_t pid) { fCurrentPolygID = pid; } 00055 virtual Int_t GetCurrentPolygID(void) const { return fCurrentPolygID; } 00056 00057 virtual void SetCurrentGen(BFLNode * gen) { fCurrentGen = gen; } 00058 virtual BFLNode * GetCurrentGen(void) const { return fCurrentGen; } 00059 00060 private: 00061 Int_t fCurrentPolygID; 00062 BFLNode * fCurrentGen; 00063 TObjArray * fGenerators; 00064 BFLWingedEdge * fVor; 00065 TIntList * fInVtxCache; 00066 TIntList * fOutVtxCache; 00067 00068 ClassDef(BFLVorOperator,0) // Class operating on Winged Edge structure 00069 }; 00070 00071 #endif
1.3.9.1