17#include <TClonesArray.h>
18#include <TGeoMatrix.h>
38using std::setprecision;
51 ,
fClusters(new TClonesArray(
"CbmMvdCluster", 10000))
108 ,
fClusters(new TClonesArray(
"CbmMvdCluster", 10000))
183 LOG(debug) <<
"CbmMvdSensorHitfinderTask: Initialisation of sensor " <<
fSensor->GetName();
213 LOG(info) <<
"CbmMvdSensorHitfinderTask::ReInt---------------";
238 TVector3
pos(0, 0, 0);
239 TVector3
dpos(0, 0, 0);
252 double startTime = 0;
254 double indicatedTime = 0;
259 Int_t indexX, indexY;
260 Double_t local[3] = {
pos.X(),
pos.Y(),
pos.Z()};
264 fSensor->TopToPixel(local, indexX, indexY);
277 new ((*fOutputBuffer)[nHits])
282 currentHit->
SetTime(indicatedTime);
300 double& indicatedTime,
double& startTime,
double& endTime)
310 Double_t layerPosZ =
fSensor->GetZ();
311 Double_t
lab[3] = {0, 0, 0};
319 Double_t sigmaIn[3] = {0., 0., 0.}, sigmaOut[3] = {0., 0., 0.}, shiftIn[3] = {0., 0., 0.}, shiftOut[3] = {0., 0., 0.};
353 startTime =
fSensor->GetFrameStartTime(minFrameNumber) - timeWalk - 2 * jitter;
354 endTime =
fSensor->GetFrameEndTime(minFrameNumber) + 2 * jitter;
356 indicatedTime = startTime + (endTime - startTime) / 2;
359 for (map<pair<Int_t, Int_t>,
Int_t>::iterator it = PixelMap.begin(); it != PixelMap.end(); ++it) {
360 pair<Int_t, Int_t> pixel = it->first;
375 LOG(debug) <<
"CbmMvdSensorHitfinderTask:: iCluster= " << cluster->
GetRefId() <<
" , clusterSize= " << clusterSize;
376 LOG(debug) <<
"CbmMvdSensorHitfinderTask::xIndex " <<
xIndex <<
" , yIndex " <<
yIndex <<
" , charge = " << charge;
383 Double_t xc =
x * charge;
384 Double_t yc =
y * charge;
391 LOG(debug) <<
"CbmMvdSensorHitfinderTask::=========================";
392 LOG(debug) <<
"CbmMvdSensorHitfinderTask::numeratorX: " <<
numeratorX <<
" , numeratorY: " <<
numeratorY
393 <<
", denominator: " <<
denominator <<
", indicated time: " << indicatedTime;
407 LOG(debug) <<
"CbmMvdSensorHitfinderTask::-----------------------------------";
409 LOG(debug) <<
"CbmMvdSensorHitfinderTask::-----------------------------------";
503 TGeoHMatrix* RecoMatrix =
fSensor->GetRecoMatrix();
504 TGeoHMatrix RotMatrix;
505 RotMatrix.SetRotation(RecoMatrix->GetRotationMatrix());
507 RotMatrix.LocalToMaster(sigmaIn, sigmaOut);
508 RotMatrix.LocalToMaster(shiftIn, shiftOut);
ClassImp(CbmMvdSensorHitfinderTask)
int32_t GetNofDigis() const
Number of digis in cluster.
void SetTimeError(double error)
void SetRefId(int32_t refId)
void SetTime(double time)
static uint32_t GetAddressFromSensorNrAndPixelXY(int32_t sensorNr, int32_t sensorY, int32_t sensorX)
std::map< std::pair< int32_t, int32_t >, int32_t > GetPixelMap() const
int32_t GetEarliestFrameNumber() const
void SetValidityStartTime(double time)
void SetValidityEndTime(double time)
virtual Double_t GetDelaySigma(Float_t charge)
virtual Double_t GetJitter(Float_t charge)
virtual Int_t GetAnalogThreshold()
virtual Double_t GetDelay(Float_t charge)
virtual ~CbmMvdSensorHitfinderTask()
Int_t GetAdcCharge(Float_t charge)
Double_t fLayerRadiusInner
TH1F * fResolutionHistoMergedX
TObjArray * fTotalChargeInNpixelsArray
void InitTask(CbmMvdSensor *mySensor)
std::map< std::pair< Int_t, Int_t >, Int_t >::iterator fDigiMapIt
TH1F * fResolutionHistoMergedY
void ComputeCenterOfGravity(CbmMvdCluster *clusterArray, TVector3 &pos, TVector3 &dpos, double &indicatedTime, double &startTime, double &endTime)
TH1F * fResolutionHistoCleanX
std::map< std::pair< Int_t, Int_t >, Int_t > fDigiMap
CbmMvdSensorHitfinderTask()
void CreateHit(CbmMvdCluster *clusterArray, TVector3 &pos, TVector3 &dpos)
TH1F * fResolutionHistoCleanY
TObjArray * fPixelChargeHistos
TClonesArray * fOutputBuffer
TClonesArray * fInputBuffer