//-------------------------------------------------------------------------- // Description: // Class PndFsmCmpDet // // Detector class that combines responses from oher detectors // // This software was developed for the PANDA collaboration. If you // use all or part of it, please give an appropriate acknowledgement. // // Author List: // Oscar Reinecke Original Author // // Copyright Information: // Copyright (C) 2008 GSI // //------------------------------------------------------------------------ #ifndef FsmCmpDet_hh #define FsmCmpDet_hh //---------------------- // Base Class Headers -- //---------------------- //------------------------------- // Collaborating class Headers -- //------------------------------- #include #include "ArgList.h" #include "PndFsmAbsDet.h" #include "PndFsmDetFactory.h" #include //-------------------------------------------- // Collaborating class forward declarations -- // ------------------------------------------- class PndFsmTrack; class PndFsmResponse; class PndFsmAbsDet; class TString; class TSpline3; class TF1; template class TParameter; class PndFsmCmpDet: public PndFsmAbsDet { public: PndFsmCmpDet(); PndFsmCmpDet(ArgList &par); virtual ~PndFsmCmpDet(); virtual PndFsmResponse* respond(PndFsmTrack *t); // adds detector for pid contribution only bool AddDetector(std::string name, std::string params=""); // this can be used to subtract a known detector // response from the parameterized track resolution bool SubtractDetector(std::string name, std::string params=""); private: bool setParameter(std::string &name, std::string &value); bool setParameter(std::string &name, double value); void readParameters(); void initParameters(); typedef std::list FsmAbsDetList; FsmAbsDetList fDetList; FsmAbsDetList fSubtractDetList; PndFsmDetFactory fDetFact; TString _parFileName; bool _parFile; double _d0ResMulti; double _z0ResMulti; double _thtResMulti; double _phiResMulti; double _momResMulti; // this can be used do degrade the // usually sharp likelihoods created // by a typical fsim detector setup double _pidLhMulti; std::map _d0; std::map _z0; std::map _tht; std::map _phi; std::map _mom; std::map*> _mom0; TParameter* _tht0; TParameter* _tht1; std::map _d0Scale; std::map _z0Scale; std::map _thtScale; std::map _phiScale; std::map _momScale; double eval(TSpline3* spline, double theta); }; #endif