//----------------------------------------------------------- // // Description: // Implementation of TpcAbsField for a Map (cylindrical // symmetry) of drift deviations relative to a straight // line. // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Cristoforo Simonetto TUM (original author) // Felix Boehmer TUM // //----------------------------------------------------------- #ifndef TPCDEVMAPCYL_H #define TPCDEVMAPCYL_H // Base Class Headers ---------------- #include "TpcFieldCylGrid.h" // Collaborating Class Headers ------- #include "TpcDevmapCylLoader.h" // Collaborating Class Declarations -- class TpcDevmapCyl : public TpcFieldCylGrid { friend class TpcDevmapCylLoader; public: // Constructors/Destructors --------- TpcDevmapCyl(const char* const ,double ,bool); TpcDevmapCyl(const char* const ,bool); TpcDevmapCyl(const char* const, double); TpcDevmapCyl(const char*); TpcDevmapCyl(); //TODO: redesign, get vDrift from param management virtual ~TpcDevmapCyl(); // Operators virtual void print(std::ostream&) const; void printc(); // Accessors ----------------------- virtual TVector3 value(const TVector3&) const; TVector3 value2(TVector3); const double vDrift(){return fvDrift;} bool loaded() const {return floaded;} //void SetDevFile(TString name){fDevFile=name;} void load(const char* const fileName); void loadinv(const char* const fileName); int getLengthR(){return _lengthR;} int getLengthZ(){return _lengthZ;} double getRMax(){return _rMax;} double getRMin(){return _rMin;} double getZMax(){return _zMax;} double getZMin(){return _zMin;} double getRWidth(){return _rWidth;} double getZWidth(){return _zWidth;} // Modifiers ----------------------- protected: bool floaded; private: // Private Data Members ------------ TpcDevmapCylLoader* loader; //this class takes care of the file I/O double fvDrift; TString fDevFile; int _lengthR; int _lengthZ; double _rMin; double _rMax; double _zMin; double _zMax; double _rWidth; double _zWidth; }; //wrapper for python use: class TpcDevmapCylWrapper : public TObject { public: TpcDevmapCylWrapper(const char* devFile); TpcDevmapCylWrapper(const char* devFile, double vdrift); TpcDevmapCylWrapper(const char* devFile, bool inv); TpcDevmapCylWrapper(const char* devFile, double vdrift, bool inv); TpcDevmapCylWrapper() {;} virtual ~TpcDevmapCylWrapper(); void printc(){fDevmap->printc();} TVector3 value(const TVector3& pos) const; void load(const char* devmapFile) {;} //stub bool loaded() const {return fLoaded;} int getLengthR(){return fDevmap->getLengthR();} int getLengthZ(){return fDevmap->getLengthZ();} double getRMax(){return fDevmap->getRMax();} double getRMin(){return fDevmap->getRMin();} double getZMax(){return fDevmap->getZMax();} double getZMin(){return fDevmap->getZMin();} double getRWidth(){return fDevmap->getRWidth();} double getZWidth(){return fDevmap->getZWidth();} private: TpcDevmapCyl* fDevmap; bool fLoaded; public: ClassDef(TpcDevmapCylWrapper,1) }; #endif