//----------------------------------------------------------- // File and Version Information: // $Id$ // // Description: // Detector class - sensitive detector for VMC // // // Environment: // Software developed for the PANDA Detector at FAIR. // // Author List: // Sebastian Neubert TUM (original author) // // //----------------------------------------------------------- #ifndef TPCDETECTOR_HH #define TPCDETECTOR_HH // Base Class Headers ---------------- #include "FairDetector.h" // Collaborating Class Headers ------- #include // remove if you do not need streaming op #include "TVector3.h" // Collaborating Class Declarations -- class TClonesArray; class FairVolume; class TpcPoint; class TpcDetector : public FairDetector{ public: // Constructors/Destructors --------- /** Name : Detector Name Active: kTRUE for active detectors (ProcessHits() will be called) kFALSE for inactive detectors */ TpcDetector(const char * Name, Bool_t Active); // Modifiers ----------------------- /** use Alice Style MC make one hit per collision with atom use other straggling WARNING: 1. geant3 has to be used! 2. LOSS = 5 has to be set! 3. DCUTE und DCUTM have to be set to 10 keV (Eloss model has upper hard cut at 10 keV). 4. For Digitaization: TpcClusterizerTask tpcClusterizer->SetMereChargeConversion() has to be set! 5. if you do not use this option make sure 2., 4. are not set! :-( 6. SetMaxNStep should be set to a high value */ void SetAliMC(Bool_t opt=kTRUE) {fAliMC=opt;} //set the name of the gas mixture to use from the geo definitions void SetMixture(std::string mix) {fMixture=mix;} //NOT YET READY //if you let GEANT produce delta rays explicitely and you want to treat them in a //reconstruction that is based on MC trackID's, turn on this option //void SetDeltaAttach(Bool_t opt=kTRUE) {fDeltaAttach=opt;} /** default constructor */ TpcDetector(); /** destructor */ virtual ~TpcDetector(); /** Initialization of the detector is done here */ //virtual void Initialize(); /** this method is called for each step during simulation (see FairMCApplication::Stepping()) */ virtual Bool_t ProcessHits( FairVolume *v=0); /** Registers the produced collections in CBMRootManager. */ virtual void Register(); /** Gets the produced collections */ virtual TClonesArray* GetCollection(Int_t iColl) const ; /** has to be called after each event to reset the containers */ virtual void Reset(); /** replaces G3 initialisation via g3Config.C */ virtual void SetSpecialPhysicsCuts(); /** set important cuts for SpecialPhysicsCuts() */ void SetCuts(double cut_el, double cut_had) {fCut_el=cut_el; fCut_had=cut_had;} void SetAllSensitive(bool opt) {fAllSensitive=opt;} /** Create the detector geometry */ void ConstructGeometry(); bool CheckIfSensitive(std::string name); void EndOfEvent(); void BeginEvent(); TpcPoint* AddHit(Int_t trackID, Int_t SecID, Int_t detID, TVector3 pos, TVector3 mom, Double_t time, Double_t length, Double_t eLoss); // Operators // Accessors ----------------------- // Modifiers ----------------------- // Operations ---------------------- // the ALICE TPC MC private: // f _________________________________________________________________________________ // found at http://www-aix.gsi.de/~miranov/AliRoot/roothtml/TPC/src/AliTPCv3.cxx.html // (Viola) inline Float_t AliTPCv3_BetheBloch(Float_t bg); inline void AliTPCv3_SetStepToNextCollision(); // Private Data Members ------------ TClonesArray *fTpcPointCollection; bool fAliMC; //use Alice Monte Carlo, ELOSS=5 has to be set! bool fDeltaAttach; //assign delta MC points to the mother track bool fAllSensitive; //make ALL root geometry volumes sensitive double fCut_el, fCut_had; std::string fMixture; //which gas mixture to use from the geometry definitions // Private Methods ----------------- public: ClassDef(TpcDetector,2) }; #endif //-------------------------------------------------------------- // $Log$ //--------------------------------------------------------------