#ifndef PNDMVDSTRIPHITPRODUCER_H
#define PNDMVDSTRIPHITPRODUCER_H
#include "PndSdsStripHitProducer.h"
//! Hit Producer Task for strip detectors
/**
* The choice of the parameters used for Digitization depends on the invocation of the
* different constructors of this task. Instantiating by the default constructor forces
* the digitisation parameters initialized from the DigiPar-Database. On the other hand these
* parameters may be overridden by invoking the constructor:
* @code PndMvdStripHitProducer(Double_t, Double_t, Double_t, Double_t, TVector2, TVector2,
* Int_t, Int_t, Int_t, Double_t, Double_t) @endcode \n
* Basically, the sensors are thought to be rectangular (even if they are not).
* Knowing the origin of the wafer, the strips can be described by an angle (orientation),
* their separation with respect to each other (pitch) and one point that is known to be part of the first strip (anchor point).\n
* The numbering scheme is as follows (assuming 128 channels per FE): \n
*
strip index | frontend # | side |
0 | 0 | top |
<- Top Anchor |
1 | 0 | top |
... | 0 | top |
127 | 0 | top |
128 | 1 | top |
... | 1 | top |
255 | 1 | top |
256 | 2 | top |
... | ... | top |
topNrFE*128-1 | topNrFE-1 | top |
topNrFE*128 | topNrFE | bottom |
<- Bottom Anchor |
... | topNrFE | bottom |
topNrFE*128+127 | topNrFE | bottom |
topNrFE*128+128 | topNrFE+1 | bottom |
... | ... | bottom |
(topNrFE+botNrFE)*128-1 | topNrFE+botNrFE-1 | bottom |
* \n
* The numbering starts from the strip containing the anchor point following the direction
* orthogonal to the strips in mathematically positive sense (along x-axis in positive direction,
* if the strip orientation equals 90 degrees).
* \n
* @author HG Zaunick
*
**/
class PndMvdStripHitProducer : public PndSdsStripHitProducer
{
public:
/** Default constructor \n
* creates object with parameters taken implicitly from DigiPar-File
**/
PndMvdStripHitProducer();
/**
* creates object with explicit assignment of Digitization parameters
*
* @param topPitch strip pitch on top side (cm)
* @param botPitch strip pitch on bottom side (cm)
* @param ori Orientation angle of strips on top side (x-y-plane)
* @param skew Orientation angle of bottom strips relative to top strips
* @param topAnchor Anchor Point on top side. The coordinates of this point are to be in centimeters
* from the center (0,0) of the sensor.
* @param botAnchor Anchor Point on bottom side. Same as above
* @param nrTopFE number of frontends attached to the top sensor side
* @param nrBotFE number of frontends attached to the bottom sensor side
* @param nrFECh number of channels of one single frontend
* @param threshold charge threshold (electrons)
* @param noise equiv. noise charge (electrons)
*/
PndMvdStripHitProducer(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="Rect", TString feType="APV25");
/** Destructor **/
virtual ~PndMvdStripHitProducer();
virtual void SetBranchNames(TString inBranchname, TString outBranchname, TString folderName);
virtual void SetBranchNames();
ClassDef(PndMvdStripHitProducer,5);
};
#endif