/** CbmMuchSegmentAuto.h *@author Mikhail Ryzhinskiy *@since 20.06.07 *@version 1.0 ** ** class for making parameter file for MUCH digitizer ** **/ #ifndef CBMMUCHSEGMENTAUTO_H #define CBMMUCHSEGMENTAUTO_H 1 #include "FairTask.h" #include class TClonesArray; class CbmGeoMuchPar; class CbmMuchLayerSide; class CbmMuchModuleGem; class CbmMuchSectorRectangular; class TH1D; class CbmMuchSegmentAuto : public FairTask{ public: /** Default constructor **/ CbmMuchSegmentAuto(); /** Default constructor **/ CbmMuchSegmentAuto(const char* digiFileName); void SetNStations(Int_t nStations); void SetSigmaMin(Double_t* sigmaXmin, Double_t* sigmaYmin); void SetSigmaMax(Double_t* sigmaXmax, Double_t* sigmaYmax); void SetOccupancyMax(Double_t* occupancyMax); virtual InitStatus Init(); virtual void Exec(Option_t * option); virtual void FinishTask(); /** Destructor **/ virtual ~CbmMuchSegmentAuto(); private: Int_t fEvents; TClonesArray* fPoints; TH1D** fHistHitDensity; Int_t fNStations; TObjArray* fStations; TString fDigiFileName; // Digitization file CbmGeoMuchPar* fGeoPar; // Geometry parameters container std::vector fExp0; // Fit parameters for EXP distribution for each station std::vector fExp1; // Fit parameters for EXP distribution for each station std::vector fSigmaXmin; // Minimum sigma in X [mm] std::vector fSigmaYmin; // Minimum sigma in Y [mm] std::vector fSigmaXmax; // Maximum sigma in X [mm] std::vector fSigmaYmax; // Maximum sigma in Y [mm] std::vector fOccupancyMax; // Maximum occupancy /** Get parameter containers **/ virtual void SetParContainers(); /** Initialization **/ void InitLayerSide(CbmMuchLayerSide* layerSide); void SegmentModule(CbmMuchModuleGem* module); void SegmentSector(CbmMuchModuleGem* module, CbmMuchSectorRectangular* sector); Bool_t ShouldSegmentByX(CbmMuchSectorRectangular* sector); Bool_t ShouldSegmentByY(CbmMuchSectorRectangular* sector); Int_t IntersectsRad(CbmMuchSectorRectangular* sector, Double_t radius); void DrawSegmentation(); void Print(Option_t* ="") const; CbmMuchSegmentAuto(const CbmMuchSegmentAuto&); CbmMuchSegmentAuto& operator=(const CbmMuchSegmentAuto&); ClassDef(CbmMuchSegmentAuto,2) }; #endif