// ------------------------------------------------------------------------- // ----- PndSsdStripClusterTask header file ----- // ----- Created 10/01/06 by V. Friese ----- // ------------------------------------------------------------------------- #ifndef PNDSSDSTRIPCLUSTERTASK_H #define PNDSSDSTRIPCLUSTERTASK_H #include "FairTask.h" #include "PndSsdGeoPar.h" #include "PndSsdStripDigiPar.h" #include "PndMvdHit.h" #include "PndMvdMCPoint.h" #include "PndMvdPixel.h" // #include "PndMvdClusterStrip.h" #include "FairGeoVector.h" #include "FairGeoTransform.h" #include "TVector3.h" #include "TRandom.h" #include "TGeoMatrix.h" #include "TGeoBBox.h" #include "TH2F.h" // #include "PndSsdHybridHitProducer.h" #include "PndSsdStripHitProducer.h" #include "PndSsdStripClusterBuilder.h" #include #include class TClonesArray; class PndSsdChargeWeightingAlgorithms; class PndSsdStripClusterTask : public FairTask { public: /** Default constructor **/ PndSsdStripClusterTask(Int_t ClusterMod=0, Int_t RadChannel=2, Int_t RadTime=0); PndSsdStripClusterTask(Double_t chargecut, TString geofile, Int_t meanalgo=0, Int_t clustermod=0, Int_t RadChannel=2, Int_t RadTime=0); /** Destructor **/ virtual ~PndSsdStripClusterTask(); /** Virtual method Init **/ virtual void SetParContainers(); virtual InitStatus Init(); virtual InitStatus ReInit(); /** Virtual method Exec **/ virtual void Exec(Option_t* opt); /** Virtual method Finish **/ virtual void Finish(); private: TVector2 CalcLineCross(TVector2 point1, TVector2 dir1, TVector2 point2, TVector2 dir2) const; void SelectSensorParams(TString detname); void CalcMeanCharge(std::vector &onecluster, Double_t &meanstrip, Double_t &meanerr, Double_t &charge); Bool_t Backmap( TVector2 meantopPoint, Double_t toperr , TVector2 meanbotPoint, Double_t boterr, TVector3 &hitpos, TVector3 &hiterr, TString &detname); TClonesArray* fDigiArray; // Input array of PndMvdDigis TClonesArray* fClusterArray; // Output array of PndMvdClusters TClonesArray* fHitArray; // Output array of PndMvdHits void Register(); void Reset(); void ProduceHits(); Double_t fRadius; Int_t fFEcolumns; Int_t fFErows; TString fGeoFile; Double_t fChargeCut; Int_t fMeanAlgo; Int_t fRadChannel; Int_t fRadTime; PndSsdStripDigiPar* fDigiParRect; //! Digitization Parameters (Barrel) PndSsdStripDigiPar* fDigiParTrap; //! Digitization Parameters (Disks) PndSsdStripDigiPar* fCurrentDigiPar; //! Digitization Parameters //! Calculator objects PndSsdCalcStrip* fStripCalcTopRect; PndSsdCalcStrip* fStripCalcBotRect; PndSsdCalcStrip* fStripCalcTopTrap; PndSsdCalcStrip* fStripCalcBotTrap; PndSsdCalcStrip* fStripCalcTop; PndSsdCalcStrip* fStripCalcBot; Int_t fClusterMod; /// selected clusterfinder 1...simple 0...default PndSsdGeoHandling* fGeoH; //! Geometry name handling PndSsdGeoPar* fGeoPar; PndSsdChargeWeightingAlgorithms* fChargeAlgos; PndSsdStripClusterBuilder* fClusterfinder; // TH1F* fHChgDiff; // TH1F* fHChgMC; // TH1F* fHChgFake; // TH1F* fHChgGhost; ClassDef(PndSsdStripClusterTask,1); }; #endif /* SsdCLUSTERTASK_H */