PandaRoot
PndSdsStripHitProducerDif.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 #ifndef PNDSDSSTRIPHITPRODUCERDIF_H
14 #define PNDSDSSTRIPHITPRODUCERDIF_H
15 
16 #include "PndSdsTask.h"
17 #include "PndSdsStripDigiPar.h"
18 #include "PndSdsMCPoint.h"
19 #include "PndSdsStrip.h"
20 #include "PndSdsDigiPixel.h"
21 #include "PndDetectorList.h"
22 
23 #include "FairGeoVector.h"
24 #include "FairGeoTransform.h"
25 #include "TVector3.h"
26 #include "TRandom.h"
27 #include "TGeoMatrix.h"
28 #include "TGeoBBox.h"
29 
30 #include "PndGeoHandling.h"
31 #include "PndSdsCalcStripDif.h"
32 
33 #include <string>
34 #include <vector>
35 
36 class TClonesArray;
37 
39 
80  public:
85 
102  PndSdsStripHitProducerDif(Double_t topPitch, Double_t botPitch, Double_t ori, Double_t skew, TVector2 topAnchor, TVector2 botAnchor, Int_t nrTopFE, Int_t nrBotFE, Int_t nrFECh,
103  Double_t threshold, Double_t noise, TString sensorType = "Rect", TString feType = "APV25");
104 
106  virtual ~PndSdsStripHitProducerDif();
107 
108  virtual void SetParContainers();
110  virtual InitStatus Init();
111  virtual InitStatus ReInit();
112 
118  virtual void SetBranchNames() = 0;
119  virtual void SetMCPointType() = 0;
120 
122  virtual void Exec(Option_t *opt);
123 
124  void AddDigi(Int_t &iStrip, Int_t iPoint, Int_t detID, Int_t sensorID, Int_t fe, Int_t chan, Double_t charge);
125 
126  void SetParamSet(Double_t topPitch, Double_t botPitch, Double_t ori, Double_t skew, TVector2 topAnchor, TVector2 botAnchor, Int_t nrTopFE, Int_t nrBotFE, Int_t nrFECh,
127  Double_t threshold, Double_t noise, TString sensorType, TString feType);
129  // Double_t GetTopPitch() const {return fTopPitch;}
130  // Double_t GetBotPitch() const {return fBotPitch;}
131  // Double_t GetOrient() const {return fOrient;}
132  // Double_t GetSkew() const {return fSkew;}
133  // TVector2 GetTopAnchor() const {return fTopAnchor;}
134  // TVector2 GetBotAnchor() const {return fBotAnchor;}
135  // Int_t GetNrTopFE() const {return fNrTopFE;}
136  // Int_t GetNrBotFE() const {return fNrBotFE;}
137  // Int_t GetNrFECh() const {return fNrFECh;}
138  // Double_t GetThreshold() const {return fThreshold;}
139  // Double_t GetNoise() const {return fNoise;}
140 
141  protected:
142  TString fBranchName;
143 
146  TClonesArray *fPointArray;
148  // TClonesArray* fHitArray;
150  TClonesArray *fStripArray;
151  // TClonesArray* fFeStripArray;
152 
157 
158  fDetectorType fMCPointType;
159 
167 
168  void Register();
169  void Reset();
170  void ProduceHits();
171 
172  // TGeoHMatrix GetTransformation (std::string detName) const;
173  // void GetLocalHitPoints(PndSdsMCPoint* myPoint, FairGeoVector& myHitIn, FairGeoVector& myHitOut);
174  // TVector3 GetSensorDimensions(std::string detName) const;
175  Bool_t SelectSensorParams(Int_t sensorID);
176 
177  PndGeoHandling *fGeoH; // converter for detector names
178  /* Double_t fTopPitch; // strip pitch on top side
179  Double_t fBotPitch; // strip pitch on bottom side
180  Double_t fOrient; // orientation of top strips
181  Double_t fSkew; // skew angle between upper and lower strips
182  TVector2 fTopAnchor; // Anchor Point on top side
183  TVector2 fBotAnchor; // Anchor Point on bottom side
184  Int_t fNrTopFE; // Number of Frontends attached to the top side
185  Int_t fNrBotFE; // Number of Frontends attached to the bottom side
186  Int_t fNrFECh; // Number of channels per frontend-chip
187  Double_t fThreshold; // strip threshold in electrons
188  Double_t fNoise; // strip noise in electrons*/
189  Bool_t fOverrideParams; // internal Flag that controls use of Parameter Invocations
190  // TString fSensType; // Type of the Sensor
191  // TString fFeType; // Frontend type name (not used yet)
192 
193  // Int_t stripHits;
194 
196 };
197 
198 #endif
PndSdsCalcStripDif * fCurrentStripCalcTop
virtual void SetBranchNames()=0
void SetParamSet(Double_t topPitch, Double_t botPitch, Double_t ori, Double_t skew, TVector2 topAnchor, TVector2 botAnchor, Int_t nrTopFE, Int_t nrBotFE, Int_t nrFECh, Double_t threshold, Double_t noise, TString sensorType, TString feType)
Class for calculating strip indices from wafer hits.
void AddDigi(Int_t &iStrip, Int_t iPoint, Int_t detID, Int_t sensorID, Int_t fe, Int_t chan, Double_t charge)
virtual InitStatus Init()
PndSdsCalcStripDif * fStripCalcBotRect
PndSdsCalcStripDif * fCurrentStripCalcBot
virtual ~PndSdsStripHitProducerDif()
Class to access the naming information of the MVD.
PndSdsCalcStripDif * fStripCalcBotTrap
virtual void SetMCPointType()=0
Digitization Parameter Class for MVD-Strip part.
PndSdsStripDigiPar * fDigiParRect
Digitization Parameters.
ClassDef(PndSdsStripHitProducerDif, 6)
TClonesArray * fStripArray
Output array of PndSdsHits.
Hit Producer Task for strip detectors with electron diffusion.
virtual void Exec(Option_t *opt)
virtual void SetParContainers()
Bool_t SelectSensorParams(Int_t sensorID)
PndSdsCalcStripDif * fStripCalcTopRect
Calculator objects.
virtual InitStatus ReInit()
PndSdsCalcStripDif * fStripCalcTopTrap