FairRoot/PandaRoot
Public Member Functions | Public Attributes | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes | List of all members
PndLmdStripClusterTask Class Reference

#include <PndLmdStripClusterTask.h>

Inheritance diagram for PndLmdStripClusterTask:
PndSdsStripClusterTask PndSdsTask PndPersistencyTask

Public Member Functions

 PndLmdStripClusterTask ()
 
virtual ~PndLmdStripClusterTask ()
 
virtual void SetBranchNames (TString inBranchname, TString outHitBranchname, TString outClustBranchname, TString folderName)
 
virtual void SetBranchNames ()
 
virtual void SetParContainers ()
 
virtual void SetCalculators ()
 
void SetClusterType ()
 
TVector3 AddMSErr (TVector3 hit, TVector3 hiterr)
 
virtual Bool_t Backmap (TVector2 meantopPoint, Double_t meantoperr, TVector2 meanbotPoint, Double_t meanboterr, TVector3 &hitPos, TMatrixD &hitCov, Int_t &sensorID)
 
void Exec (Option_t *opt)
 
InitStatus Init ()
 
void SetMSflag (bool fflag)
 
 ClassDef (PndLmdStripClusterTask, 2)
 
virtual InitStatus ReInit ()
 
virtual void InitMQ (TList *tempList)
 
virtual void GetParList (TList *)
 
virtual void ExecMQ (TList *inputList, TList *outputList)
 
virtual void SetParContainersMQ (TList *)
 
virtual void SetInBranchId ()
 
virtual void Finish ()
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

Public Attributes

PndGeoHandlingfGeoH
 
FairRun * ana
 
FairRuntimeDb * rtdb
 

Protected Member Functions

TVector2 CalcLineCross (TVector2 point1, TVector2 dir1, TVector2 point2, TVector2 dir2) const
 
void SetCurrentCalculators (PndSdsStripDigiPar *digipar)
 
Bool_t SelectSensorParams (Int_t sensorID)
 
void CalcMeanCharge (PndSdsClusterStrip *onecluster, Double_t &meanstrip, Double_t &meanerr, Double_t &charge, Double_t &timestamp, Double_t &timestampError)
 
void Register ()
 
void Reset ()
 
void ProduceHits ()
 
void ResetClusterFinders ()
 
void FillClusterFinders ()
 
void ClearCalculators ()
 
 ClassDef (PndSdsStripClusterTask, 2)
 
 ClassDef (PndSdsTask, 1)
 

Protected Attributes

TString fPath
 
TClonesArray * fDigiArray
 
TClonesArray * fClusterArray
 
TClonesArray * fHitArray
 
TString fClustBranchName
 
Int_t fClusterType
 
Int_t fFEcolumns
 
Int_t fFErows
 
Double_t fChargeCut
 
Int_t fRadChannel
 
Int_t fRadTime
 
Double_t fSingleStripChargeThreshold
 
FairEventHeader * fEventHeader
 
TList * fDigiParameterList
 Digitization Parameters. More...
 
PndSdsStripDigiParfCurrentDigiPar
 
PndSensorNameParfSensorNamePar
 
TList * fChargeDigiParameterList
 
std::map< const char
*, PndSdsCalcStrip * > 
fStripCalcTop
 Calculator objects. More...
 
std::map< const char
*, PndSdsCalcStrip * > 
fStripCalcBot
 
std::map< const char
*, PndSdsChargeConversion * > 
fChargeConverter
 
PndSdsCalcStripfCurrentStripCalcTop
 
PndSdsCalcStripfCurrentStripCalcBot
 
PndSdsChargeWeightingAlgorithmsfChargeAlgos
 
PndSdsChargeConversionfCurrentChargeConverter
 
PndSdsStripDigiParfDigiPar
 
PndSdsStripClustererfCurrentClusterfinder
 Geometry name handling. More...
 
std::map< const char
*, PndSdsStripClusterer * > 
fClusterFinderList
 
BinaryFunctor * fFunctor
 
TString fInBranchName
 
TString fOutBranchName
 
TString fFolderName
 
Int_t fInBranchId
 
Int_t fOutBranchId
 

Private Member Functions

void combitransToLumiFrame (TVector3 &hitPos)
 
void rotateToLumiFrame (TVector3 &hitPos)
 
TMatrixD rotateToLumiFrame (TMatrixD &hitCov)
 

Private Attributes

bool flagMS
 
Double_t fPbeam
 

Detailed Description

Definition at line 12 of file PndLmdStripClusterTask.h.

Constructor & Destructor Documentation

PndLmdStripClusterTask::PndLmdStripClusterTask ( )

Default constructor

Definition at line 28 of file PndLmdStripClusterTask.cxx.

References fGeoH, flagMS, and PndGeoHandling::Instance().

29  : PndSdsStripClusterTask("LMD Strip Clusterisation Task") {
31  // fAlignParamList = new TList();
32  flagMS = true;
33 }
static PndGeoHandling * Instance()
PndLmdStripClusterTask::~PndLmdStripClusterTask ( )
virtual

Destructor

Definition at line 36 of file PndLmdStripClusterTask.cxx.

36  {
37  // if(0!=fGeoH) delete fGeoH;
38  // if(0!=fChargeAlgos) delete fChargeAlgos;
39 }

Member Function Documentation

TVector3 PndLmdStripClusterTask::AddMSErr ( TVector3  hit,
TVector3  hiterr 
)

Definition at line 220 of file PndLmdStripClusterTask.cxx.

References d, Double_t, fParticle, fPbeam, fVerbose, num, res, CAMath::Sqrt(), X, and xerr.

Referenced by Backmap().

220  {
221  if (fVerbose > 0)
222  Info("AddMSErr",
223  "calculation additional errors due to multiple scaterring");
224 
225  // Calculation of ThetaMS -------------------------------------
226  // Charge & mass of particle
227  Int_t PDGCode = -2212;
228  TDatabasePDG* fdbPDG = TDatabasePDG::Instance();
229  TParticlePDG* fParticle = fdbPDG->GetParticle(PDGCode);
230  Double_t fMass = fParticle->Mass();
231 
232  Double_t Ebeam = TMath::Hypot(fPbeam, fMass);
233  TLorentzVector LorMom(0, 0, fPbeam, Ebeam);
234  Double_t beta = LorMom.Beta();
235  Double_t X = 0.015;
236  Double_t X0 = 9.37;
237  // Double_t thetaMS =
238  // 13.6*1e-3*TMath::Sqrt(X/X0)*(1+0.038*TMath::Log(X/X0))/(beta*fPbeam);
239  Double_t thetaMS = 13.6 * 1e-3 * TMath::Sqrt(X / X0) / (beta * fPbeam);
240  // cout<<"thetaMS = "<<thetaMS<<" fPbeam = "<<fPbeam<<endl;
241  //-----------------------------------------------------------
242 
243  // TO DO: use parameters from geometry info for LUMI
244  Double_t d = 10.;
245 
246  double xerr, yerr;
247  double zhit = hpos.Z();
248  // const double Z0 = 1100.;
249  const double Z0 = 1099.;
250  // const double Z0 = 0.;
251  int num = (zhit - Z0) / d;
252  // double numd = (zhit-Z0)/10.;
253  // cout<<"num = "<<num<<endl;
254  xerr = hposerr.X();
255  yerr = hposerr.Y();
256  // cout<<"Plane #"<<num<<" before: zhit="<<zhit<<" xerr = "<<xerr<<" yerr =
257  // "<<yerr<<endl;
258  // Double_t sigmaMSplane = 0.5*X*thetaMS; //TEST
259  Double_t sigmaMSplane = X * thetaMS;
260  // cout<<"sigmaMSplane = "<<sigmaMSplane<<" um"<<endl;
261  if (num == 0) {
262  xerr = TMath::Hypot(xerr, sigmaMSplane);
263  yerr = TMath::Hypot(yerr, sigmaMSplane);
264  }
265  // double xhit = hpos.X(); //[R.K. 01/2017] unused variable
266 
267  // Double_t l = 10./cos(2.326*TMath::Pi()/180.);
268  double sigmaMS;
269  for (int j = 0; j < num; j++) {
270  // sigmaMS = 2*(j+1)*d*thetaMS;
271  sigmaMS = (j + 1) * d * thetaMS;
272  // cout<<"sigmaMS = "<<sigmaMS<<" xerr="<<xerr<<" yerr="<<yerr<<endl;
273  // sigmaMS = j*d*thetaMS;
274  xerr = TMath::Hypot(xerr, sigmaMS);
275  yerr = TMath::Hypot(yerr, sigmaMS);
276  }
277  if (fVerbose > 2)
278  cout << " num:" << num << "(Z=" << zhit << ") xerr=" << xerr
279  << " yerr=" << yerr << endl;
280  TVector3 res(xerr, yerr, hposerr.Z());
281  return res;
282 };
int fVerbose
Definition: poormantracks.C:24
TObjArray * d
Int_t res
Definition: anadigi.C:166
int num[96]
Definition: ranlxd.cxx:381
static T Sqrt(const T &x)
Definition: PndCAMath.h:37
Int_t * fParticle
Definition: run_full.C:24
Double_t
Double_t xerr[nsteps]
Definition: dedx_bands.C:114
double X
Definition: anaLmdDigi.C:68
Bool_t PndLmdStripClusterTask::Backmap ( TVector2  meantopPoint,
Double_t  meantoperr,
TVector2  meanbotPoint,
Double_t  meanboterr,
TVector3 &  hitPos,
TMatrixD hitCov,
Int_t &  sensorID 
)
virtual

TODO: think how to make alignment with using Kalman fillter

TODO: think how to make alignment with using Kalman fillter

Definition at line 612 of file PndLmdStripClusterTask.cxx.

References AddMSErr(), b, PndSdsStripClusterTask::CalcLineCross(), cos(), Double_t, fabs(), PndSdsStripClusterTask::fCurrentDigiPar, PndSdsStripClusterTask::fCurrentStripCalcBot, PndSdsStripClusterTask::fCurrentStripCalcTop, fGeoH, flagMS, PndSdsStripDigiPar::GetBotPitch(), PndSdsStripDigiPar::GetOrient(), PndGeoHandling::GetSensorDimensionsShortId(), PndSdsStripDigiPar::GetSkew(), PndSdsCalcStrip::GetStripDirection(), PndSdsStripDigiPar::GetTopAnchor(), PndSdsStripDigiPar::GetTopPitch(), PndGeoHandling::LocalToMasterErrorsShortId(), PndGeoHandling::LocalToMasterShortId(), sin(), sqrt(), CAMath::Sqrt(), and t.

Referenced by Exec().

616  {
617  // BACKMAPPING
618  // get the backmapped point
619  // cout<<"PndLmdStripClusterTask::BACKMAP"<<endl;
620  // Info("Backmap","Sensor ID is %s",sensorID);
621  TVector3 localpos;
622  TMatrixD locCov(3, 3);
623  Double_t t, b;
624  // cout<<"sensorID = "<<sensorID<<endl;
625  // cout<<"fGeoH = "<<fGeoH<<endl;
626  Double_t errZ =
627  2. * fGeoH->GetSensorDimensionsShortId(sensorID).Z() / TMath::Sqrt(12.0);
628  // cout<<"fGeoH->GetSensorDimensionsShortId(sensorID).Z() =
629  // "<<fGeoH->GetSensorDimensionsShortId(sensorID).Z()<<endl;
630  // Double_t errZ =
631  // fGeoH->GetSensorDimensionsShortId(sensorID).Z()/TMath::Sqrt(12.0);//TEST!!!
632  // cout<<"errZ = "<<errZ<<endl;
633 
634  TVector2 onsensorPoint =
636  meanbotPoint, fCurrentStripCalcBot->GetStripDirection());
637  // // here we assume the sensor system to be in the _Middle_ of the volume
638  localpos.SetXYZ(onsensorPoint.X(), onsensorPoint.Y(), 0.);
639  // here we assume the sensor system to be in the _surface_ of the volume
640  // localpos.SetXYZ( onsensorPoint.X(),
641  // onsensorPoint.Y(),-(fGeoH->GetSensorDimensionsShortId(sensorID).Z()));
642  // let's see if we're still on the sensor (cut combinations with noise off)
643  if (fabs(localpos.X()) > fabs(fCurrentDigiPar->GetTopAnchor().X()))
644  return kFALSE;
645  if (fabs(localpos.Y()) > fabs(fCurrentDigiPar->GetTopAnchor().Y()))
646  return kFALSE;
647 
648  // do the transformation from sensor to lab frame
649  hitPos = fGeoH->LocalToMasterShortId(localpos, sensorID);
650 
652  // // //do the transformation from lab frame to LUMI frame (with z-axis perp.
653  // to lumi planes)
654  // combitransToLumiFrame(hitPos);
655 
656  // //do correction due to misalignemt of sensor
657  // alignmentCorr(hitPos,sensorID);
658 
659  // calculate the errors corresponding to a skewed system!
660  t = meantoperr * fCurrentDigiPar->GetTopPitch() *
662  b = meanboterr * fCurrentDigiPar->GetBotPitch() *
664  locCov[0][0] = t * t + b * b +
665  2 * fabs(t * b * cos(fCurrentDigiPar->GetSkew())); // TEST
666  t = meantoperr * fCurrentDigiPar->GetTopPitch() *
668  b = meanboterr * fCurrentDigiPar->GetBotPitch() *
670  locCov[1][1] = t * t + b * b +
671  2 * fabs(t * b * cos(fCurrentDigiPar->GetSkew())); // TEST
672  locCov[2][2] = errZ * errZ;
673 
674  if (flagMS) {
675  // //Add uncertanty due to multiple scattering
676  TVector3 hitErr(sqrt(locCov[0][0]), sqrt(locCov[1][1]), sqrt(locCov[2][2]));
677  TVector3 hitErrMSadd = AddMSErr(hitPos, hitErr);
678  locCov[0][0] = TMath::Power(hitErrMSadd.X(), 2);
679  locCov[1][1] = TMath::Power(hitErrMSadd.Y(), 2);
680  locCov[2][2] = TMath::Power(hitErrMSadd.Z(), 2);
681  }
682 
683  // do the transformation from sensor to lab frame
684  hitCov = fGeoH->LocalToMasterErrorsShortId(locCov, sensorID);
685 
687  // //transformation to LUMI frame
688  // hitCov = rotateToLumiFrame(hitCov);
689 
690  return kTRUE;
691 }
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
TTree * b
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
static T Sqrt(const T &x)
Definition: PndCAMath.h:37
PndSdsCalcStrip * fCurrentStripCalcTop
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:111
const TVector2 GetStripDirection() const
Double_t GetOrient() const
TVector3 GetSensorDimensionsShortId(Int_t shortId)
TMatrixD LocalToMasterErrorsShortId(const TMatrixD &local, const Int_t &shortId)
Double_t GetSkew() const
Double_t
TVector3 AddMSErr(TVector3 hit, TVector3 hiterr)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
PndSdsStripDigiPar * fCurrentDigiPar
Double_t GetBotPitch() const
TVector3 LocalToMasterShortId(const TVector3 &local, const Int_t &shortId)
TTree * t
Definition: bump_analys.C:13
TVector2 GetTopAnchor() const
PndSdsCalcStrip * fCurrentStripCalcBot
Double_t GetTopPitch() const
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
TVector2 CalcLineCross(TVector2 point1, TVector2 dir1, TVector2 point2, TVector2 dir2) const
TVector2 PndSdsStripClusterTask::CalcLineCross ( TVector2  point1,
TVector2  dir1,
TVector2  point2,
TVector2  dir2 
) const
protectedinherited

Definition at line 614 of file PndSdsStripClusterTask.cxx.

References Double_t, dx, dy, s, x, and y.

Referenced by Backmap(), and PndSdsStripClusterTask::Backmap().

617 {
618  Double_t dx, dy, s, M, x, y;
619  dx = point2.X() - point1.X();
620  dy = point2.Y() - point1.Y();
621 
622  M = dir1.X()*dir2.Y() - dir1.Y()*dir2.X();
623 
624  if(M !=0.)
625  {
626  s = dir1.Y()*dx/M - dir1.X()*dy/M;
627  x = point2.X() + dir2.X()*s;
628  y = point2.Y() + dir2.Y()*s;
629  }
630  else
631  {
632  std::cout<<"Warning in PndSdsStripClusterTask::CalcLineCross(): M=0 setting (x,y) to 0"<<std::endl;
633  x=0.;y=0.;
634  }
635 
636  TVector2 result(x,y);
637  return result;
638 }
double dy
TLorentzVector s
Definition: Pnd2DStar.C:50
Double_t
double dx
Double_t x
Double_t y
void PndSdsStripClusterTask::CalcMeanCharge ( PndSdsClusterStrip onecluster,
Double_t meanstrip,
Double_t meanerr,
Double_t charge,
Double_t timestamp,
Double_t timestampError 
)
protectedinherited

Definition at line 644 of file PndSdsStripClusterTask.cxx.

References PndSdsChargeWeightingAlgorithms::Binary(), PndSdsChargeWeightingAlgorithms::CenterOfGravity(), PndSdsChargeConversion::DigiValueToCharge(), Double_t, PndSdsChargeWeightingAlgorithms::Eta(), PndSdsStripClusterTask::eta_rect, PndSdsStripClusterTask::eta_trap, PndSdsStripClusterTask::fChargeAlgos, PndSdsStripClusterTask::fCurrentChargeConverter, PndSdsStripClusterTask::fCurrentDigiPar, PndSdsStripClusterTask::fDigiArray, PndSdsStripClusterTask::fGeoH, fVerbose, PndSdsCluster::GetClusterList(), PndSdsStripDigiPar::GetClusterMean(), PndSdsCluster::GetDigiIndex(), PndGeoHandling::GetPath(), PndSdsDigi::GetSensorID(), PndSdsChargeWeightingAlgorithms::HeadTail(), and sqrt().

Referenced by Exec(), and PndSdsStripClusterTask::Exec().

645 {
646  meanstrip=0;
647  meanerr=0;
648  charge=0;
649  timestamp=0;
650  timestampError = 0;
651  Int_t nDigis = 0;
652 
653 // if (fCurrentDigiPar->GetClusterMean() == 0)
654 // {
655 // // Calculate mean position in position channels weighted by the charges
656 // Int_t strip;
657 // SensorSide side;
658 // Double_t tempcharge;
659 // std::vector<Int_t> oneclusterlist = onecluster->GetClusterList();
660 // for (std::vector<Int_t>::iterator itDigi = oneclusterlist.begin();
661 // itDigi != oneclusterlist.end(); ++itDigi)
662 // { // calculate the mean charge and stripnumber
663 // PndSdsDigiStrip* myDigi = (PndSdsDigiStrip*)fDigiArray->At(*itDigi);
664 // std::cout << "Digi: " << *myDigi << std::endl;
665 // fCurrentStripCalcTop->CalcFeChToStrip(myDigi->GetFE(), myDigi->GetChannel(), strip, side);
666 // tempcharge = fCurrentChargeConverter->DigiValueToCharge(*myDigi);
667 // std::cout << "TempCharge: " << tempcharge << std::endl;
668 // charge += tempcharge;
669 // meanstrip += tempcharge * strip;
670 // meanerr += tempcharge*tempcharge; // this is stupid, to be removed one day
671 // Double_t var = myDigi->GetTimeStampError() * myDigi->GetTimeStampError();
672 // timestamp += myDigi->GetTimeStamp()/var;
673 // timestampError += 1/var;
674 // nDigis++;
675 // }
676 // meanstrip = meanstrip/charge;
677 // std::cout << "Charge: " << charge << std::endl;
678 // // this error treatment is: dx = dpitch * sqrt(weigthsquares)
679 // meanerr = sqrt(meanerr/(charge*charge));
680 // if (nDigis > 0){
681 // timestamp /= timestampError;
682 // timestampError = sqrt(timestampError / nDigis);
683 // }
684 // return;
685 // } else {
686 // // //TODO: Apply other clusterfinder mean & error algorithms
687 // // if(onecluster->GetSensorSide()==kTOP) fCurrentChargeAlgos->SetCalcStrip(fCurrentStripCalcTop);
688 // // else fCurrentChargeAlgos->SetCalcStrip(fCurrentStripCalcBot);
689 // // fChargeAlgos->SetChargeConverter(fCurrentChargeConverter); // done somewhere else
690 // std::pair<Double_t,Double_t> result = fChargeAlgos->CenterOfGravity(onecluster);
691 // meanstrip=result.first;
692 // meanerr=result.second;
693 // std::vector<Int_t> oneclusterlist = onecluster->GetClusterList();
694 // for (std::vector<Int_t>::iterator itDigi = oneclusterlist.begin();
695 // itDigi != oneclusterlist.end(); ++itDigi)
696 // {
697 // PndSdsDigiStrip* myDigi = (PndSdsDigiStrip*)fDigiArray->At(*itDigi);
698 // std::cout << "Digi: " << * myDigi << std::endl;
699 // std::cout << "TempCharge: " << fCurrentChargeConverter->DigiValueToCharge(*myDigi) << std::endl;
700 // charge += fCurrentChargeConverter->DigiValueToCharge(*myDigi);
701 // Double_t var = myDigi->GetTimeStampError() * myDigi->GetTimeStampError();
702 // timestamp += myDigi->GetTimeStamp()/var;
703 // timestampError += 1/var;
704 // nDigis++;
705 // }
706 // if (nDigis > 0){
707 // timestamp /= timestampError;
708 // timestampError = sqrt(timestampError / nDigis);
709 // }
710 //
711 // std::cout << "Charge: " << charge << std::endl;
712 // return;
713 // }
714 
715  Int_t centroidMod = fCurrentDigiPar->GetClusterMean();
716  PndSdsDigiStrip* tmpdigi=0;
717 
718  std::pair<Double_t,Double_t> result;
719 
720  switch(centroidMod){ // Select a method by the number of the CenteroidAlgorithm
721 
722  case 1:
723  // Binary (hightest signal)
724  result = fChargeAlgos->Binary(onecluster);
725  break;
726 
727  case 2:
728  //Center of Gravity, Binary for cluster size 1
729  result = fChargeAlgos->CenterOfGravity(onecluster);
730  break;
731 
732  case 3:
733  // Eta Algorithm for cluster size 2, Binary for cluster size 1, else CoG
734  tmpdigi = (PndSdsDigiStrip*)(fDigiArray->At(onecluster->GetDigiIndex(0)));
735  if(fGeoH->GetPath(tmpdigi->GetSensorID()).Contains("Fwd"))
736  result = fChargeAlgos->Eta(onecluster, eta_trap);
737  else result = fChargeAlgos->Eta(onecluster, eta_rect);
738  break;
739 
740  case 4:
741  // Head-Tail, Binary for cluster size 1
742  result = fChargeAlgos->HeadTail(onecluster);
743  break;
744 
745  //Center of Gravity, Binary for cluster size 1
746  default:
747  result = fChargeAlgos->CenterOfGravity(onecluster);
748  break;
749  }
750 
751  meanstrip=result.first;
752  meanerr=result.second;
753 
754  std::vector<Int_t> oneclusterlist = onecluster->GetClusterList();
755  for (std::vector<Int_t>::iterator itDigi = oneclusterlist.begin();
756  itDigi != oneclusterlist.end(); ++itDigi)
757  {
758  tmpdigi = (PndSdsDigiStrip*)fDigiArray->At(*itDigi);
759  if(fVerbose>3) Info("CalcMeanCharge:","Added charge of digi %i in cluster is %f",nDigis,fCurrentChargeConverter->DigiValueToCharge(*tmpdigi));
760  charge += fCurrentChargeConverter->DigiValueToCharge(*tmpdigi);
761  Double_t var = tmpdigi->GetTimeStampError() * tmpdigi->GetTimeStampError();
762  timestamp += tmpdigi->GetTimeStamp()/var;
763  timestampError += 1/var;
764  nDigis++;
765  }
766  if (nDigis > 0){
767  timestamp /= timestampError;
768  timestampError = sqrt(timestampError / nDigis);
769  }
770  return;
771 }
std::pair< Double_t, Double_t > HeadTail(const PndSdsCluster *Cluster)
int fVerbose
Definition: poormantracks.C:24
std::vector< Int_t > GetClusterList() const
Definition: PndSdsCluster.h:38
PndSdsChargeWeightingAlgorithms * fChargeAlgos
Int_t GetSensorID() const
Definition: PndSdsDigi.h:59
Int_t GetClusterMean() const
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Class for digitised strip hits.
TString GetPath(Int_t shortID)
for a given shortID the path is returned
virtual Double_t DigiValueToCharge(Double_t digi)=0
Converts a given digitized charge into charge in electrons.
Int_t GetDigiIndex(Int_t i) const
Definition: PndSdsCluster.h:40
Double_t
std::pair< Double_t, Double_t > CenterOfGravity(const PndSdsCluster *Cluster)
Double_t meanerr[nsteps]
Definition: dedx_bands.C:65
PndSdsStripDigiPar * fCurrentDigiPar
std::pair< Double_t, Double_t > Eta(const PndSdsCluster *Cluster, const TH2F *PosVsEta)
std::pair< Double_t, Double_t > Binary(const PndSdsCluster *Cluster)
PndSdsChargeConversion * fCurrentChargeConverter
PndLmdStripClusterTask::ClassDef ( PndLmdStripClusterTask  ,
 
)
PndSdsTask::ClassDef ( PndSdsTask  ,
 
)
protectedinherited
PndSdsStripClusterTask::ClassDef ( PndSdsStripClusterTask  ,
 
)
protectedinherited
void PndSdsStripClusterTask::ClearCalculators ( )
protectedinherited

Definition at line 124 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::fChargeAlgos, PndSdsStripClusterTask::fChargeConverter, PndSdsStripClusterTask::fClusterFinderList, PndSdsStripClusterTask::fCurrentChargeConverter, PndSdsStripClusterTask::fCurrentClusterfinder, PndSdsStripClusterTask::fCurrentStripCalcBot, PndSdsStripClusterTask::fCurrentStripCalcTop, PndSdsStripClusterTask::fStripCalcBot, and PndSdsStripClusterTask::fStripCalcTop.

Referenced by PndSdsStripClusterTask::SetCalculators(), and PndSdsStripClusterTask::~PndSdsStripClusterTask().

125 {
126  for( std::map<const char*,PndSdsCalcStrip*>::iterator it = fStripCalcTop.begin(); it != fStripCalcTop.end(); it++){
127  if(0 != it->second) delete it->second;
128  it->second = 0;
129  }
130  for( std::map<const char*,PndSdsCalcStrip*>::iterator it = fStripCalcBot.begin(); it != fStripCalcBot.end(); it++){
131  if(0 != it->second) delete it->second;
132  it->second = 0;
133  }
134  if(0 != fChargeAlgos) delete fChargeAlgos;
135  for(std::map<const char*,PndSdsChargeConversion*>::iterator it = fChargeConverter.begin(); it != fChargeConverter.end(); it++){
136  if(0 != it->second) delete it->second;
137  it->second = 0;
138  }
139  for(std::map<const char*,PndSdsStripClusterer*>::iterator it = fClusterFinderList.begin(); it != fClusterFinderList.end(); it++){
140  if(0 != it->second) delete it->second;
141  it->second = 0;
142  }
143 
148 }
PndSdsChargeWeightingAlgorithms * fChargeAlgos
PndSdsCalcStrip * fCurrentStripCalcTop
std::map< const char *, PndSdsStripClusterer * > fClusterFinderList
std::map< const char *, PndSdsCalcStrip * > fStripCalcBot
std::map< const char *, PndSdsCalcStrip * > fStripCalcTop
Calculator objects.
std::map< const char *, PndSdsChargeConversion * > fChargeConverter
PndSdsCalcStrip * fCurrentStripCalcBot
PndSdsChargeConversion * fCurrentChargeConverter
PndSdsStripClusterer * fCurrentClusterfinder
Geometry name handling.
void PndLmdStripClusterTask::combitransToLumiFrame ( TVector3 &  hitPos)
private

Definition at line 547 of file PndLmdStripClusterTask.cxx.

References Double_t.

547  {
548  // do the transformation from lab frame to LUMI frame (with z-axis perp. to
549  // lumi planes)
550  // const Double_t kHalfFoilThickness = 0.0075; // Thickness of sensitive
551  // foil (cm) //[R.K. 01/2017] unused variable
552  const Double_t kTransZ = 1100.; //(cm) //move at z-position
553  const Double_t kRotUmZ = 476.03; //(cm) //z-point to rotate
554  // const Double_t kTransX = 25; //(cm) //move at x-position //[R.K. 01/2017]
555  // unused variable
556  const Double_t kRot =
557  0.040596358401388; // 2.326 degree = 4.05963584013881024e-02 rad
558  TVector3 LumiTrans(0, 0, kRotUmZ);
559  hitPos -= LumiTrans;
560  hitPos.RotateY(-kRot);
561  LumiTrans = TVector3(0, 0, kTransZ - kRotUmZ);
562  hitPos -= LumiTrans;
563  // cout<<"!!! NEW HIT position in LUMI frame!!! "<<endl;
564  // hitPos.Print();
565 }
Double_t
void PndLmdStripClusterTask::Exec ( Option_t *  opt)
virtual

Virtual method Exec

Reimplemented from PndSdsStripClusterTask.

Definition at line 285 of file PndLmdStripClusterTask.cxx.

References Backmap(), Bool_t, PndSdsStripClusterTask::CalcMeanCharge(), PndSdsCalcStrip::CalcStripPointOnLine(), Double_t, fabs(), PndSdsStripClusterTask::fChargeCut, PndSdsStripClusterTask::fClustBranchName, PndSdsStripClusterTask::fClusterArray, PndSdsStripClusterTask::fClusterType, PndSdsStripClusterTask::fCurrentClusterfinder, PndSdsStripClusterTask::fCurrentStripCalcBot, PndSdsStripClusterTask::fCurrentStripCalcTop, PndSdsStripClusterTask::fDigiArray, PndSdsStripClusterTask::fDigiParameterList, PndSdsStripClusterTask::fFunctor, fGeoH, PndSdsStripClusterTask::fHitArray, PndSdsStripClusterTask::FillClusterFinders(), PndSdsTask::fInBranchName, PndSdsTask::fOutBranchName, PndSdsStripClusterTask::fSingleStripChargeThreshold, fVerbose, PndSdsStripClusterer::GetBotClusterIDs(), PndSdsCluster::GetClusterList(), PndSdsCluster::GetClusterSize(), PndSdsCluster::GetDigiIndex(), PndSdsDigi::GetIndex(), PndSdsStripClusterer::GetLeftDigiIDs(), PndSdsDigi::GetNIndices(), PndSdsDigi::GetSensorID(), PndSdsStripClusterer::GetTopClusterIDs(), i, PndSdsHit::Print(), s, PndSdsStripClusterer::SearchClusters(), PndSdsHit::SetBotIndex(), PndSdsHit::SetCov(), PndSdsStripClusterTask::SetCurrentCalculators(), PndGeoHandling::SetVerbose(), and sqrt().

285  {
286  if (fVerbose > 2)
287  std::cout << " **Starting PndLmdStripClusterTask::Exec()**" << std::endl;
288  std::vector<PndSdsDigiStrip> digiStripArray;
289  // Reset output array
290  fClusterArray =
291  FairRootManager::Instance()->GetTClonesArray(fClustBranchName);
292  if (!fClusterArray) Fatal("Exec", "No ClusterArray");
293  fClusterArray->Delete();
294 
295  fHitArray = FairRootManager::Instance()->GetTClonesArray(fOutBranchName);
296  if (!fHitArray) Fatal("Exec", "No HitArray");
297  fHitArray->Delete();
298 
299  // Get input array
300 
301  if (FairRunAna::Instance()->IsTimeStamp()) {
302  fDigiArray->Clear();
303  fDigiArray = FairRootManager::Instance()->GetData(
305  FairRootManager::Instance()->GetEventTime() +
306  10); // FairRootManager::Instance()->GetEventTime() +
307  if (fVerbose > 1)
308  std::cout << "-I- PndLmdStripClusterTask::Exec Digis: "
309  << fDigiArray->GetEntries() << std::endl;
310  } else
311  fDigiArray =
312  (TClonesArray*)FairRootManager::Instance()->GetObject(fInBranchName);
313 
314  if (!fDigiArray) {
315  std::cout << "-W- PndLmdStripClusterTask::Init: "
316  << "No LMDDigi array!" << std::endl;
317  return;
318  }
319 
320  // when we have no digis, we can end the event here.
321  if (fDigiArray->GetEntriesFast() == 0) return;
323 
324  // Setup
326 
327  std::vector<PndSdsClusterStrip*> clusters;
328  std::vector<Int_t> topclusters; // contains index to fClusterArray
329  std::vector<Int_t> botclusters; // contains index to fClusterArray
330  std::vector<Int_t> oneclustertop;
331  std::vector<Int_t> oneclusterbot;
332  std::vector<Int_t> leftDigis;
333  Int_t mcindex, clindex, botIndex, topIndex;
334  // Int_t detID = FairRootManager::Instance()->GetBranchId(fInBranchName);
335  // //[R.K. 01/2017] unused variable
336  Int_t clDetID = FairRootManager::Instance()->GetBranchId(fClustBranchName);
337  Double_t mycharge;
338  TVector2 meantopPoint, meanbotPoint, onsensorPoint;
339  TVector3 hitPos, hitErr;
340  TMatrixD hitCov(3, 3);
341  Int_t clusterOffset = 0;
342  PndSdsHit* tmphit;
343 
344  // ------- SEARCH ------
345  TIter parsetiter(fDigiParameterList);
346  while (PndSdsStripDigiPar* digipar = (PndSdsStripDigiPar*)
347  parsetiter()) { // loop over all parameter sets and their filled
348  // finders (representing sensor types)
349  SetCurrentCalculators(digipar);
350 
352  // fetch ids in 'clusters' to the top and bot side
353  topclusters = fCurrentClusterfinder->GetTopClusterIDs();
354  botclusters = fCurrentClusterfinder->GetBotClusterIDs();
355  if (fVerbose > 2) {
356  leftDigis = fCurrentClusterfinder->GetLeftDigiIDs();
357  if (0 < leftDigis.size()) {
358  std::cout << "There are " << leftDigis.size()
359  << " Digis not assigned to"
360  << " clusters:\n";
361  for (unsigned int s = 0; s < leftDigis.size(); s++) {
362  std::cout << leftDigis[s] << "|";
363  }
364  std::cout << std::endl;
365  } else
366  std::cout << "All Digis assigned to clusters" << std::endl;
367  }
368  // Fill the ClonesArray for output TODO: do this better, don't copy objects
369  // around
370  // save array size before we fill
371  clusterOffset = fClusterArray->GetEntriesFast();
372  for (std::vector<PndSdsClusterStrip*>::iterator clit = clusters.begin();
373  clit != clusters.end(); ++clit) {
374  clindex = fClusterArray->GetEntriesFast();
375  PndSdsClusterStrip* myCluster =
376  new ((*fClusterArray)[clindex]) PndSdsClusterStrip(*(*clit));
377 
378  if (FairRunAna::Instance()->IsTimeStamp()) {
379  myCluster->ResetLinks();
380  for (Int_t i = 0; i < myCluster->GetClusterSize(); i++) {
381  PndSdsDigiStrip* tempDigi =
382  (PndSdsDigiStrip*)fDigiArray->At(myCluster->GetDigiIndex(i));
383  myCluster->AddLink(FairLink(tempDigi->GetEntryNr()));
384  }
385  }
386  }
387 
388  // printout for checking
389  if (fVerbose > 2) {
390  std::cout << "Check.. Offset: " << clusterOffset << "Top Clusters: ";
391  for (std::vector<Int_t>::iterator itTop = topclusters.begin();
392  itTop != topclusters.end(); ++itTop) {
393  std::cout << *itTop << " | ";
394  }
395  std::cout << std::endl;
396  std::cout << "Bot Clusters: ";
397  for (std::vector<Int_t>::iterator itBot = botclusters.begin();
398  itBot != botclusters.end(); ++itBot) {
399  std::cout << *itBot << " | ";
400  }
401  std::cout << std::endl;
402  }
403 
404  // begin the hit reconstruction
405  // loop structure:
406  //
407  // top clusters
408  // |-calculate chargeweighted mean
409  // |-bot clusters
410  // |-|-calc chargew. mean
411  // |-|-calc the crossing strip points
412  // |-|-fill hit array
413 
414  // ----- merge top/bot clusters to hits -----
415  // loop on clusters from the top side
416  for (std::vector<Int_t>::iterator itTop = topclusters.begin();
417  itTop != topclusters.end(); ++itTop) {
418  topIndex = *itTop + clusterOffset; // index in fClusterArray
419  Double_t topcharge = 0., meantopstrip = 0., meantoperr = 0.,
420  timestamp = 0., timestampError = 0.;
421  PndSdsClusterStrip* aTopCluster = clusters[*itTop];
422  oneclustertop = aTopCluster->GetClusterList();
423  if (oneclustertop.size() < 1) continue;
424  PndSdsDigiStrip* atopDigi =
425  ((PndSdsDigiStrip*)fDigiArray->At(oneclustertop[0]));
426  Int_t sensorIDtop = atopDigi->GetSensorID();
427 
428  // if (kFALSE==SelectSensorParams(detName)) continue; // Invalid
429  // parameters, skip here.
430  CalcMeanCharge(aTopCluster, meantopstrip, meantoperr, topcharge,
431  timestamp, timestampError);
432 
433  if (oneclustertop.size() == 1 &&
434  topcharge < fSingleStripChargeThreshold) {
435  std::cout << "-W- PndLmdStripClusterTask::Exec: Single strip charge ("
436  << topcharge << " e-) falls below the threshold of "
437  << fSingleStripChargeThreshold << "e- : skipping. " << endl;
438  continue;
439  }
440  if (topcharge <= 0) { // not a sane charge
441  Error("Exec() - Hit combination",
442  "Not a sane top charge (%f) calculated, skip cluster %i",
443  topcharge, *itTop);
444  continue;
445  }
446  if (meantopstrip < 0) { // not a sane strip number
447  Error("Exec() - Hit combination",
448  "Not a sane top mean (%f) calculated, skip cluster %i",
449  meantopstrip, *itTop);
450  continue;
451  }
452  fCurrentStripCalcTop->CalcStripPointOnLine(meantopstrip, meantopPoint);
453  // loop on bottom side
454  for (std::vector<Int_t>::iterator itBot = botclusters.begin();
455  itBot != botclusters.end(); ++itBot) {
456  botIndex = *itBot + clusterOffset; // index in fClusterArray
457  Double_t botcharge = 0., meanbotstrip = 0., meanboterr = 0.;
458  PndSdsClusterStrip* aBotCluster = clusters[*itBot];
459  oneclusterbot = aBotCluster->GetClusterList();
460  if (oneclusterbot.size() < 1) continue;
461  PndSdsDigiStrip* abotDigi =
462  ((PndSdsDigiStrip*)fDigiArray->At(oneclusterbot[0]));
463  Int_t sensorIDbot = abotDigi->GetSensorID();
464 
465  // go to the next cluster if we didn't hit the same sensor
466  if (sensorIDbot != sensorIDtop) continue;
467 
468  CalcMeanCharge(aBotCluster, meanbotstrip, meanboterr, botcharge,
469  timestamp, timestampError);
470 
471  if (oneclusterbot.size() == 1 &&
472  botcharge < fSingleStripChargeThreshold) {
473  std::cout << "-W- PndLmdStripClusterTask::Exec: Single strip charge ("
474  << botcharge << " e-) falls below the threshold of "
475  << fSingleStripChargeThreshold << "e- : skipping. " << endl;
476  continue;
477  }
478  if (botcharge <= 0) { // not a sane charge
479  Error("Exec() - Hit combination",
480  "Not a sane bot charge (%f) calculated, skip cluster %i",
481  botcharge, *itBot);
482  continue;
483  }
484  if (meanbotstrip < 0) { // not a sane strip number
485  Error("Exec() - Hit combination",
486  "Not a sane bot mean (%f) calculated, skip cluster %i",
487  meanbotstrip, *itBot);
488  continue;
489  }
490 
491  if (fVerbose > 2) {
492  std::cout << "Charges: Ctop = " << topcharge
493  << " | Cbot = " << botcharge
494  << " | difference bot-top = " << botcharge - topcharge
495  << " | Cut at " << fChargeCut << std::endl;
496  }
497 
498  if (fChargeCut > 0 &&
499  fabs(botcharge - topcharge) <
500  fChargeCut) { // look if the charges are not too differently
501  mycharge = (botcharge + topcharge) / 2.;
503  meanbotPoint);
504  mcindex = -1; // reset
505  for (Int_t mcI = 0; mcI < atopDigi->GetNIndices(); mcI++) {
506  if (atopDigi->GetIndex(mcI) > -1) {
507  for (Int_t mcIb = 0; mcIb < abotDigi->GetNIndices(); mcIb++) {
508  if (abotDigi->GetIndex(mcIb) == atopDigi->GetIndex(mcI)) {
509  mcindex = abotDigi->GetIndex(mcIb);
510  break;
511  }
512  }
513  }
514  }
515  Bool_t test = Backmap(meantopPoint, meantoperr, meanbotPoint,
516  meanboterr, hitPos, hitCov, sensorIDtop);
517  if (kFALSE == test) continue;
518 
519  // --- add hit to list ---
520  Int_t i = fHitArray->GetEntriesFast();
521  hitErr.SetXYZ(sqrt(hitCov[0][0]), sqrt(hitCov[1][1]),
522  sqrt(hitCov[2][2]));
523  tmphit = new ((*fHitArray)[i]) PndSdsHit(
524  clDetID, sensorIDtop, hitPos, hitErr, topIndex, mycharge,
525  oneclusterbot.size() + oneclustertop.size(), mcindex);
526  tmphit->SetBotIndex(botIndex);
527  tmphit->SetLink(FairLink(fClusterType, topIndex));
528  tmphit->AddLink(FairLink(fClusterType, botIndex));
529  tmphit->SetCov(hitCov);
530  tmphit->SetTimeStamp(timestamp);
531  tmphit->SetTimeStampError(timestampError);
532  if (fVerbose > 1) tmphit->Print();
533  } else if (fVerbose > 2)
534  std::cout << "Strip charge contents too different" << std::endl;
535  } // loop bot clusters
536  } // loop top clusters
537  } // loop finders
538 
539  if (fVerbose > 1)
540  std::cout << "-I- PndLmdStripClusterTask: "
541  << fClusterArray->GetEntriesFast() << " Lmd Clusters and "
542  << fHitArray->GetEntriesFast() << " Hits calculated."
543  << " out of " << fDigiArray->GetEntriesFast() << " Digis"
544  << std::endl;
545  return;
546 }
int fVerbose
Definition: poormantracks.C:24
std::vector< Int_t > GetClusterList() const
Definition: PndSdsCluster.h:38
Int_t GetClusterSize() const
Definition: PndSdsCluster.h:39
Int_t GetSensorID() const
Definition: PndSdsDigi.h:59
virtual void Print(const Option_t *opt=0) const
Definition: PndSdsHit.cxx:66
TString fOutBranchName
Definition: PndSdsTask.h:40
Int_t i
Definition: run_full.C:25
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:29
Int_t GetIndex(int i=0) const
Definition: PndSdsDigi.h:63
PndSdsCalcStrip * fCurrentStripCalcTop
TLorentzVector s
Definition: Pnd2DStar.C:50
Class for digitised strip hits.
std::vector< Int_t > GetLeftDigiIDs() const
Int_t GetDigiIndex(Int_t i) const
Definition: PndSdsCluster.h:40
std::vector< Int_t > GetBotClusterIDs() const
Double_t
TString fInBranchName
Definition: PndSdsTask.h:39
Digitization Parameter Class for MVD-Strip part.
virtual Bool_t Backmap(TVector2 meantopPoint, Double_t meantoperr, TVector2 meanbotPoint, Double_t meanboterr, TVector3 &hitPos, TMatrixD &hitCov, Int_t &sensorID)
friend F32vec4 fabs(const F32vec4 &a)
Definition: P4_F32vec4.h:47
std::vector< Int_t > GetTopClusterIDs() const
void SetBotIndex(Int_t id)
Definition: PndSdsHit.h:86
void SetCurrentCalculators(PndSdsStripDigiPar *digipar)
void SetVerbose(Int_t v)
virtual std::vector< PndSdsClusterStrip * > SearchClusters()=0
Int_t GetNIndices() const
Definition: PndSdsDigi.h:64
TList * fDigiParameterList
Digitization Parameters.
void SetCov(TMatrixD cov)
Definition: PndSdsHit.cxx:70
PndSdsCalcStrip * fCurrentStripCalcBot
void CalcMeanCharge(PndSdsClusterStrip *onecluster, Double_t &meanstrip, Double_t &meanerr, Double_t &charge, Double_t &timestamp, Double_t &timestampError)
PndSdsStripClusterer * fCurrentClusterfinder
Geometry name handling.
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
void CalcStripPointOnLine(const Double_t strip, TVector2 &point) const
void PndSdsStripClusterTask::ExecMQ ( TList *  inputList,
TList *  outputList 
)
virtualinherited

Definition at line 177 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::Exec(), PndSdsStripClusterTask::fClusterArray, PndSdsStripClusterTask::fDigiArray, PndSdsStripClusterTask::fEventHeader, and PndSdsStripClusterTask::fHitArray.

178 {
179 // LOG(INFO) << "PndSdsStripClusterTask::ExecMQ inBranchName " << fInBranchName.Data() << FairLogger::endl;
180 // LOG(INFO) << "InputList: " << inputList->GetEntries() << FairLogger::endl;
181 // TIter next(inputList);
182 // while(TObject* obj = next()){
183 // LOG(INFO) << obj->GetName() << FairLogger::endl;
184 // }
185  fDigiArray = (TClonesArray*) inputList->FindObject("PndSdsDigiStrips");
186  fEventHeader = (FairEventHeader*) inputList->FindObject("EventHeader.");
187  LOG(INFO) << "DigiArray: " << fDigiArray << FairLogger::endl;
188  LOG(INFO) << "DigiArray: " << fDigiArray->GetEntriesFast() << FairLogger::endl;
189 
190 
191  outputList->Add(fClusterArray);
192  outputList->Add(fHitArray);
193  Exec("");
194  return;
195 }
virtual void Exec(Option_t *opt)
void PndSdsStripClusterTask::FillClusterFinders ( )
protectedinherited

Definition at line 583 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterer::AddDigi(), Bool_t, PndSdsCalcStrip::CalcFeChToStrip(), PndSdsStripClusterTask::fChargeAlgos, PndSdsStripClusterTask::fCurrentClusterfinder, PndSdsStripClusterTask::fCurrentStripCalcTop, PndSdsStripClusterTask::fDigiArray, PndSdsStripClusterTask::fGeoH, fVerbose, PndSdsDigiStrip::GetChannel(), PndSdsDigi::GetFE(), PndGeoHandling::GetPath(), PndSdsDigi::GetSensorID(), PndSdsDigiStrip::Print(), PndSdsStripClusterTask::ResetClusterFinders(), PndSdsStripClusterTask::SelectSensorParams(), and PndSdsChargeWeightingAlgorithms::SetDigiArray().

Referenced by Exec(), and PndSdsStripClusterTask::Exec().

584 {
585  // Info("FillClusterFinders","Here! fCurrntClusterfinder:%p",fCurrentClusterfinder);
587  // a std::map is a SORTED container, it is sorted by the identifier
588  Int_t sensorID;
589  Int_t strip;
590  SensorSide side;
591  PndSdsDigiStrip* myDigi=0;
592  Bool_t tester=kFALSE;
593  // Sort Digi indice into the clusterfinder
594  if (fDigiArray->GetEntriesFast() == 0) return;
595  if(fVerbose>2) Info("FillClusterFinders","adding these digis to the finders:");
596  for (Int_t iDigi = 0; iDigi < fDigiArray->GetEntriesFast(); iDigi++)
597  { // sort digis by sensor name and stripnumber
598  myDigi = (PndSdsDigiStrip*)(fDigiArray->At(iDigi));
599  if(fVerbose>2) {std::cout<<"Digi "<<iDigi<<" "; myDigi->Print(); std::cout << fGeoH->GetPath(myDigi->GetSensorID()) << std::endl;}
600  sensorID = myDigi->GetSensorID();
601  tester=SelectSensorParams(sensorID);
602  if (kFALSE==tester) continue; // Invalid parameters, skip here.
603  //we use the top side as "first" side
604  fCurrentStripCalcTop->CalcFeChToStrip(myDigi->GetFE(), myDigi->GetChannel(), strip, side);
605  // Time stamp measured in ns, cropped to integer for clusterfinding
606  //fCurrentClusterfinder->AddDigi(sensorID,side,(Int_t)myDigi->GetTimeStamp(),strip,iDigi);
607  fCurrentClusterfinder->AddDigi(sensorID,side,1,strip,iDigi);
608  }
609  // make sure the digi array is distributed well
611 }
std::ostream & Print(std::ostream &out=std::cout) const
int fVerbose
Definition: poormantracks.C:24
PndSdsChargeWeightingAlgorithms * fChargeAlgos
Int_t GetSensorID() const
Definition: PndSdsDigi.h:59
Bool_t SelectSensorParams(Int_t sensorID)
PndSdsCalcStrip * fCurrentStripCalcTop
Class for digitised strip hits.
Int_t GetFE() const
Definition: PndSdsDigi.h:57
TString GetPath(Int_t shortID)
for a given shortID the path is returned
void AddDigi(Int_t sensorID, SensorSide side, Int_t timestamp, Int_t strip, Int_t iDigi)
SensorSide
void CalcFeChToStrip(Int_t fe, Int_t channel, Int_t &strip, enum SensorSide &side) const
Int_t GetChannel() const
PndSdsStripClusterer * fCurrentClusterfinder
Geometry name handling.
void PndSdsStripClusterTask::Finish ( )
virtualinherited

Virtual method Finish

Definition at line 640 of file PndSdsStripClusterTask.cxx.

641 {
642 }
virtual void PndSdsStripClusterTask::GetParList ( TList *  )
inlinevirtualinherited

Reimplemented in PndMvdStripClusterTask.

Definition at line 125 of file PndSdsStripClusterTask.h.

125 {};// tempList //[R.K.03/2017] unused variable(s)
Bool_t PndPersistencyTask::GetPersistency ( )
inlineinherited

Definition at line 32 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency.

Referenced by PndLmdPixelHitProducerFast::GetPersistance(), PndMdtDigitization::Init(), PndMdtHitProducerIdeal::Init(), PndMdtClusterTask::Init(), PndFtsHitProducerRealFast::Init(), PndSttHitProducerRealFast::Init(), PndDiscTaskReconstruction::Init(), PndRichHitProducer::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), PndIdealTrackFinder::Init(), PndSttMvdGemTracking::Init(), PndMdtTrkProducer::Init(), PndFtsHitProducerRealFull::Init(), PndLmdPixelClusterTask::Init(), PndSttHitProducerRealFull::Init(), Init(), PndEmcApdHitProducer::Init(), PndMissingPzCleanerTask::Init(), PndEmcMakeRecoHit::Init(), PndEmcMakeClusterOnline::Init(), PndTrackSmearTask::Init(), PndEmcFWEndcapTimebasedWaveforms::Init(), PndSttHitProducerIdeal::Init(), PndEmcFWEndcapDigi::Init(), PndFtsHitProducerIdeal::Init(), PndEmcMakeCluster::Init(), PndMdtPointsToWaveform::Init(), PndDiscTaskDigitization::Init(), PndEmcMakeDigi::Init(), PndSdsTimeWalkCorrTask::Init(), PndLmdPixelHitProducerFast::Init(), PndDrcHitFinder::Init(), PndRichHitFinder::Init(), PndEmcMakeCorr::Init(), PndFtofHitProducerIdeal::Init(), PndEmcHitsToWaveform::Init(), PndSciTDigiTask::Init(), PndDrcHitProducerIdeal::Init(), PndSdsHitProducerIdeal::Init(), PndSciTHitProducerIdeal::Init(), PndRecoMultiKalmanTask2::Init(), PndEmcHitProducer::Init(), PndDrcHitProducerReal::Init(), PndDskFLGHitProducerIdeal::Init(), PndEmcTmpWaveformToDigi::Init(), PndDrcDigiTask::Init(), PndEmcWaveformToDigi::Init(), PndSttMatchTracks::Init(), PndEmcWaveformToCalibratedDigi::Init(), PndTrkTracking2::Init(), PndSttFindTracks::Init(), PndEmcMultiWaveformToCalibratedDigi::Init(), PndRecoKalmanTask2::Init(), PndDrcTimeDigiTask::Init(), PndEmcExpClusterSplitter::Init(), PndFtsHoughTrackerTask::Init(), PndSdsNoiseProducer::Init(), PndEmcPhiBumpSplitter::Init(), PndSdsIdealRecoTask::Init(), PndSdsHybridHitProducer::Init(), PndRecoMultiKalmanTask::Init(), PndSdsIdealClusterTask::Init(), PndRecoKalmanTask::Init(), PndSdsStripHitProducerDif::Init(), PndGemDigitize::Init(), PndSdsStripHitProducer::Init(), PndGemFindHits::Init(), PndSdsPixelClusterTask::Init(), PndSdsStripClusterTask::Init(), PndMvdGemTrackFinderOnHits::Init(), PndBarrelTrackFinder::Init(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcMakeBump::PndEmcMakeBump(), PndUnassignedHitsTask::RegisterBranches(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndEmcMakeBump::SetStorageOfData(), and PndEmcFullDigiTask::StoreDigi().

32 { return fPersistency; }
InitStatus PndLmdStripClusterTask::Init ( )
virtual

Reimplemented from PndSdsStripClusterTask.

Definition at line 43 of file PndLmdStripClusterTask.cxx.

References PndSdsStripClusterTask::fClustBranchName, PndSdsStripClusterTask::fClusterArray, PndSdsStripClusterTask::fDigiArray, PndSdsTask::fFolderName, PndSdsStripClusterTask::fFunctor, PndSdsStripClusterTask::fHitArray, PndSdsTask::fInBranchName, PndSdsTask::fOutBranchName, fPbeam, PndPersistencyTask::GetPersistency(), par, rtdb, SetBranchNames(), SetCalculators(), and PndSdsStripClusterTask::SetInBranchId().

Referenced by runReco().

43  {
44  FairBaseParSet* par =
45  (FairBaseParSet*)(rtdb->findContainer("FairBaseParSet"));
46  fPbeam = par->GetBeamMom();
47 
49 
50  FairRootManager* ioman = FairRootManager::Instance();
51  if (!ioman) {
52  std::cout << "-E- PndSdsStripClusterTask::Init: "
53  << "RootManager not instantiated!" << std::endl;
54  return kFATAL;
55  }
56 
57  fFunctor = new TimeGap();
58 
59  // Get input array
60  fDigiArray = (TClonesArray*)ioman->GetObject(fInBranchName);
61  //
62  if (!fDigiArray) {
63  std::cout << "-W- PndSdsStripClusterTask::Init: "
64  << "No SDSDigi array!" << std::endl;
65  return kERROR;
66  }
67  // set output arrays
68 
69  fClusterArray = ioman->Register(fClustBranchName, "PndSdsClusterStrip",
71 
72  // fHitArray = new TClonesArray("PndSdsHit");
73  fHitArray =
74  ioman->Register(fOutBranchName, "PndSdsHit", fFolderName, GetPersistency());
75 
76  SetInBranchId();
77 
79 
80  // fPath = getenv("VMCWORKDIR");
81  // fPath += "/macro/params/interstrippos_vs_eta_histos.root";
82 
83  // etahistofile = new TFile(fPath,"READ");
84  // eta_rect = (TH1F*)etahistofile->Get("posvseta rect");
85  // eta_trap = (TH1F*)etahistofile->Get("posvseta trap");
86 
87  Info("Init", "Initialisation successfull");
88  return kSUCCESS;
89 }
TString fOutBranchName
Definition: PndSdsTask.h:40
Double_t par[3]
TString fInBranchName
Definition: PndSdsTask.h:39
TString fFolderName
Definition: PndSdsTask.h:41
void PndSdsStripClusterTask::InitMQ ( TList *  tempList)
virtualinherited

Definition at line 161 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::fClusterArray, PndSdsStripClusterTask::fGeoH, PndSdsStripClusterTask::fHitArray, PndGeoHandling::FillSensorMap(), PndSdsStripClusterTask::fSensorNamePar, PndSdsTask::SetBranchNames(), PndSdsStripClusterTask::SetCalculators(), and PndSdsStripClusterTask::SetParContainersMQ().

162 {
163  SetBranchNames();
164  fHitArray = new TClonesArray("PndSdsHit",10000);
165  fHitArray->SetName("MVDHitsStrip");
166  fClusterArray = new TClonesArray("PndSdsClusterStrip", 10000);
167  fClusterArray->SetName("MVDStripCluster");
168 
169  fSensorNamePar = (PndSensorNamePar*)tempList->FindObject("PndSensorNamePar");
171  fGeoH->FillSensorMap();
172 
173  SetParContainersMQ(tempList);
174  SetCalculators();
175 }
Class to access the naming information of the MVD.
virtual void SetBranchNames()=0
virtual void SetParContainersMQ(TList *)
PndSensorNamePar * fSensorNamePar
Unique match between SensorID and path in TGeoManager.
void PndSdsStripClusterTask::ProduceHits ( )
protectedinherited
void PndSdsStripClusterTask::Register ( )
protectedinherited
InitStatus PndSdsStripClusterTask::ReInit ( )
virtualinherited

Definition at line 198 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::SetCalculators(), and PndSdsStripClusterTask::SetParContainers().

199 {
200  SetParContainers();
201  SetCalculators();
202  return kSUCCESS;
203 }
void PndSdsStripClusterTask::Reset ( )
protectedinherited
void PndSdsStripClusterTask::ResetClusterFinders ( )
protectedinherited

Definition at line 573 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::fClusterFinderList.

Referenced by PndSdsStripClusterTask::FillClusterFinders().

574 {
575  //recursively clean the digis in the clusterfinder objects each event
576  for(std::map<const char*,PndSdsStripClusterer*>::iterator CFiter = fClusterFinderList.begin();
577  CFiter != fClusterFinderList.end(); CFiter++)
578  {
579  (CFiter->second)->Reinit();
580  }
581 }
std::map< const char *, PndSdsStripClusterer * > fClusterFinderList
void PndLmdStripClusterTask::rotateToLumiFrame ( TVector3 &  hitPos)
private

Definition at line 567 of file PndLmdStripClusterTask.cxx.

References res.

567  {
568  TMatrixD hitMtx(3, 3);
569  hitMtx[0][0] = hitPos[0];
570  hitMtx[1][0] = hitPos[1];
571  hitMtx[2][0] = hitPos[2];
572  TMatrixD res = rotateToLumiFrame(hitMtx);
573  hitPos = TVector3(hitMtx(0, 0), hitMtx(1, 0), hitMtx(2, 0));
574 }
Int_t res
Definition: anadigi.C:166
void rotateToLumiFrame(TVector3 &hitPos)
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
TMatrixD PndLmdStripClusterTask::rotateToLumiFrame ( TMatrixD hitCov)
private

Definition at line 575 of file PndLmdStripClusterTask.cxx.

References CAMath::Cos(), Double_t, Pi, rot, CAMath::Sin(), and theta.

575  {
576  Double_t theta = 2.326;
577  Double_t degrad = TMath::Pi() / 180.;
578  Double_t sintheta = TMath::Sin(degrad * theta);
579  Double_t costheta = TMath::Cos(degrad * theta);
580  TMatrixD rot(3, 3); // Rotation around Y axis
581  rot[0][0] = costheta;
582  rot[0][1] = 0;
583  rot[0][2] = sintheta;
584  rot[1][0] = 0;
585  rot[1][1] = 1;
586  rot[1][2] = 0;
587  rot[2][0] = -sintheta;
588  rot[2][1] = 0;
589  rot[2][2] = costheta;
590  TMatrixD result = rot;
591  result.T();
592  result *= hitCov;
593  hitCov = result;
594  result *= rot;
595  return result;
596 }
static T Sin(const T &x)
Definition: PndCAMath.h:42
static T Cos(const T &x)
Definition: PndCAMath.h:43
Double_t
TGeoRotation rot
Double_t Pi
TMatrixT< double > TMatrixD
Definition: PndLmdDim.h:52
Bool_t PndSdsStripClusterTask::SelectSensorParams ( Int_t  sensorID)
protectedinherited

Definition at line 536 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::fDigiParameterList, PndSdsStripClusterTask::fGeoH, fVerbose, PndGeoHandling::GetPath(), PndSdsStripClusterTask::SetCurrentCalculators(), and TString.

Referenced by PndSdsStripClusterTask::FillClusterFinders().

537 {
538  TString detpath = fGeoH->GetPath(sensorID);
539  if( !(detpath.Contains("Strip")) )
540  return kFALSE;
541  TIter parsetiter(fDigiParameterList);
542  while ( PndSdsStripDigiPar* digipar = (PndSdsStripDigiPar*)parsetiter() )
543  {
544  const char* sensortype = digipar->GetSensType();
545  if(detpath.Contains(sensortype)) {
546  SetCurrentCalculators(digipar);
547  return kTRUE;
548  }
549  }
550  // no suiting object found
551  if (fVerbose > 1) std::cout<<"detector name does not contain a valid parameter name."<<std::endl;
552  if (fVerbose > 2) std::cout<<" DetName : "<<detpath<<std::endl;
553  return kFALSE;
554 }
int fVerbose
Definition: poormantracks.C:24
TString GetPath(Int_t shortID)
for a given shortID the path is returned
Digitization Parameter Class for MVD-Strip part.
void SetCurrentCalculators(PndSdsStripDigiPar *digipar)
TList * fDigiParameterList
Digitization Parameters.
void PndLmdStripClusterTask::SetBranchNames ( TString  inBranchname,
TString  outHitBranchname,
TString  outClustBranchname,
TString  folderName 
)
virtual

Virtual method Init

Definition at line 92 of file PndLmdStripClusterTask.cxx.

References PndSdsStripClusterTask::fClustBranchName, PndSdsTask::fFolderName, PndSdsTask::fInBranchName, and PndSdsTask::fOutBranchName.

95  {
96  fInBranchName = inBranchname;
97  fOutBranchName = outHitBranchname;
98  fClustBranchName = outClustBranchname;
99  fFolderName = folderName;
100 }
TString fOutBranchName
Definition: PndSdsTask.h:40
TString fInBranchName
Definition: PndSdsTask.h:39
TString fFolderName
Definition: PndSdsTask.h:41
void PndLmdStripClusterTask::SetBranchNames ( )
virtual

Implements PndSdsTask.

Definition at line 102 of file PndLmdStripClusterTask.cxx.

References PndSdsStripClusterTask::fClustBranchName, PndSdsTask::fFolderName, PndSdsTask::fInBranchName, and PndSdsTask::fOutBranchName.

Referenced by Init().

102  {
103  fInBranchName = "LMDStripDigis";
104  fOutBranchName = "LMDHitsStrip";
105  fClustBranchName = "LMDStripClusterCand";
106  fFolderName = "PndLmd";
107 }
TString fOutBranchName
Definition: PndSdsTask.h:40
TString fInBranchName
Definition: PndSdsTask.h:39
TString fFolderName
Definition: PndSdsTask.h:41
void PndLmdStripClusterTask::SetCalculators ( )
virtual

Reimplemented from PndSdsStripClusterTask.

Definition at line 161 of file PndLmdStripClusterTask.cxx.

References PndSdsStripClusterTask::fChargeConverter, PndSdsStripClusterTask::fChargeDigiParameterList, PndSdsStripClusterTask::fClusterFinderList, PndSdsStripClusterTask::fDigiParameterList, PndSdsTask::fInBranchId, fVerbose, PndSdsTotDigiPar::GetChargingTime(), PndSdsTotDigiPar::GetClockFrequency(), PndSdsTotDigiPar::GetConstCurrent(), and PndSdsStripClusterTask::SetCalculators().

Referenced by Init().

161  {
162  Info("SetCalculators", "lmd");
164  TIter params(fDigiParameterList);
165  TIter totparams(fChargeDigiParameterList);
166  while (PndSdsStripDigiPar* digipar = (PndSdsStripDigiPar*)params()) {
167  PndSdsTotDigiPar* totdigipar = (PndSdsTotDigiPar*)totparams();
168  if (0 == digipar) continue;
169  const char* senstype = digipar->GetSensType();
170  if (digipar->GetChargeConvMethod() == 1) {
171  if (fVerbose > 0)
172  Info("SetCalculators()", "Use Tot charge conversion for %s sensors",
173  senstype);
175  totdigipar->GetChargingTime(), totdigipar->GetConstCurrent(),
176  digipar->GetThreshold(), totdigipar->GetClockFrequency(), fVerbose);
177  } else {
178  if (fVerbose > 0)
179  Info("SetCalculators()", "Use Ideal charge conversion for %s sensors",
180  senstype);
182  }
183 
184  Int_t ClusterMod = digipar->GetClusterMod();
185  Int_t RadChannel = digipar->GetRadChannel();
186  Int_t RadTime = digipar->GetRadTime();
187  if (0 == ClusterMod) {
189  fInBranchId, RadChannel); // search radius in channel no.
190  } else if (1 == ClusterMod) {
191  fClusterFinderList[senstype] =
192  new PndSdsStripAdvClusterFinder(fInBranchId, RadChannel, RadTime);
193  }
194  }
195 
196  // TIter alignparams(fAlignParamList);
197  // PndLmdAlignPar* lmdalignpar=(PndLmdAlignPar*)alignparams();
198  // if(0==lmdalignpar) {
199  // Error("PndLmdStripClusterTask::SetCalculators()","A ALIGN Parameter Set
200  // does not exist properly.");
201  // }
202  // else{
203  // // lmdalignpar->Print();
204  // for(int ik=0;ik<32;ik++){
205  // fShiftX[ik] = lmdalignpar->GetShiftX(ik);
206  // fShiftY[ik] = lmdalignpar->GetShiftY(ik);
207  // fShiftZ[ik] = lmdalignpar->GetShiftZ(ik);
208  // fRotateX[ik] = lmdalignpar->GetRotateX(ik);
209  // fRotateY[ik] = lmdalignpar->GetRotateY(ik);
210  // fRotateZ[ik] = lmdalignpar->GetRotateZ(ik);
211  // if (fVerbose > 2) cout<<"fShiftX["<<ik<<"]="<<fShiftX[ik]<<"
212  // fRotateX["<<ik<<"]="<<fRotateX[ik]
213  // <<" fRotateY["<<ik<<"]="<<fRotateY[ik]<<"
214  // fRotateZ["<<ik<<"]="<<fRotateZ[ik]<<endl;
215  // }
216  // }
217  // lmdalignpar->Print();
218 }
int fVerbose
Definition: poormantracks.C:24
Int_t fInBranchId
Definition: PndSdsTask.h:43
Charge Digitization Parameter Class for SDS.
Double_t GetConstCurrent() const
std::map< const char *, PndSdsStripClusterer * > fClusterFinderList
Double_t GetClockFrequency() const
Find Clusters on a strip sensor in two dimensions.
Digitization Parameter Class for MVD-Strip part.
std::map< const char *, PndSdsChargeConversion * > fChargeConverter
Double_t GetChargingTime() const
TList * fDigiParameterList
Digitization Parameters.
void PndLmdStripClusterTask::SetClusterType ( )
inline
void PndSdsStripClusterTask::SetCurrentCalculators ( PndSdsStripDigiPar digipar)
protectedinherited

Definition at line 557 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::fChargeAlgos, PndSdsStripClusterTask::fChargeConverter, PndSdsStripClusterTask::fChargeCut, PndSdsStripClusterTask::fClusterFinderList, PndSdsStripClusterTask::fCurrentChargeConverter, PndSdsStripClusterTask::fCurrentClusterfinder, PndSdsStripClusterTask::fCurrentDigiPar, PndSdsStripClusterTask::fCurrentStripCalcBot, PndSdsStripClusterTask::fCurrentStripCalcTop, PndSdsStripClusterTask::fSingleStripChargeThreshold, PndSdsStripClusterTask::fStripCalcBot, PndSdsStripClusterTask::fStripCalcTop, PndSdsStripDigiPar::GetChargeCut(), PndSdsStripDigiPar::GetSensType(), PndSdsStripDigiPar::GetSingleChargeCut(), PndSdsChargeWeightingAlgorithms::SetCalcStrip(), and PndSdsChargeWeightingAlgorithms::SetChargeConverter().

Referenced by Exec(), PndSdsStripClusterTask::Exec(), and PndSdsStripClusterTask::SelectSensorParams().

558 {
559  const char* sensortype = digipar->GetSensType();
560  fCurrentStripCalcTop = fStripCalcTop[sensortype];
561  fCurrentStripCalcBot = fStripCalcBot[sensortype];
564  fCurrentDigiPar = digipar;
567  fChargeCut = digipar->GetChargeCut();
569  return;
570 }
PndSdsChargeWeightingAlgorithms * fChargeAlgos
Double_t GetSingleChargeCut() const
const char * GetSensType() const
PndSdsCalcStrip * fCurrentStripCalcTop
std::map< const char *, PndSdsStripClusterer * > fClusterFinderList
void SetChargeConverter(PndSdsChargeConversion *ChargeConverter)
Double_t GetChargeCut() const
std::map< const char *, PndSdsCalcStrip * > fStripCalcBot
std::map< const char *, PndSdsCalcStrip * > fStripCalcTop
Calculator objects.
PndSdsStripDigiPar * fCurrentDigiPar
std::map< const char *, PndSdsChargeConversion * > fChargeConverter
PndSdsCalcStrip * fCurrentStripCalcBot
PndSdsChargeConversion * fCurrentChargeConverter
PndSdsStripClusterer * fCurrentClusterfinder
Geometry name handling.
virtual void PndSdsStripClusterTask::SetInBranchId ( )
inlinevirtualinherited

Reimplemented from PndSdsTask.

Definition at line 129 of file PndSdsStripClusterTask.h.

References PndSdsStripClusterTask::fClustBranchName, PndSdsStripClusterTask::fClusterType, PndSdsTask::fInBranchId, and PndSdsTask::fInBranchName.

Referenced by Init(), and PndSdsStripClusterTask::Init().

129  {
130  FairRootManager *ioman = FairRootManager::Instance();
131  fInBranchId = ioman->GetBranchId(fInBranchName);
132  std::cout << "InBranchId: " << fInBranchId << " for Branch: " << fInBranchName.Data() << std::endl;
133  fClusterType = ioman->GetBranchId(fClustBranchName);
134  std::cout << "fClusterType: " << fClusterType << " for Branch: " << fClustBranchName.Data() << std::endl;
135 
136  }
Int_t fInBranchId
Definition: PndSdsTask.h:43
TString fInBranchName
Definition: PndSdsTask.h:39
void PndLmdStripClusterTask::SetMSflag ( bool  fflag)
inline

Definition at line 40 of file PndLmdStripClusterTask.h.

References flagMS.

Referenced by runLumi2Reco().

40 { flagMS = fflag; };
void PndLmdStripClusterTask::SetParContainers ( )
virtual

Virtual method Init

Reimplemented from PndSdsStripClusterTask.

Definition at line 110 of file PndLmdStripClusterTask.cxx.

References ana, PndSdsStripClusterTask::fChargeDigiParameterList, PndSdsStripClusterTask::fDigiParameterList, PndLmdContFact::GetDigiParNames(), rtdb, PndSdsStripClusterTask::SetParContainers(), and TString.

110  {
111  // called from the FairRun::Init()
112  // Caution: The Parameter Set is not filled from the DB IO, yet.
113  // This will be done just before this Tasks Init() is called.
114  ana = FairRun::Instance();
115  rtdb = ana->GetRuntimeDb();
116 
117  PndLmdContFact* themvdcontfact =
118  (PndLmdContFact*)rtdb->getContFactory("PndLmdContFact");
119  TList* theContNames = themvdcontfact->GetDigiParNames();
120  Info("SetParContainers()", "The container names list contains %i entries",
121  theContNames->GetEntries());
122  TIter cfIter(theContNames);
123  while (TObjString* contname = (TObjString*)cfIter()) {
124  TString parsetname = contname->String();
125  Info("SetParContainers()", "%s", parsetname.Data());
126  if (parsetname.BeginsWith("SDSStripDigiPar")) {
127  PndSdsStripDigiPar* digipar =
128  (PndSdsStripDigiPar*)(rtdb->getContainer(parsetname.Data()));
129  if (!digipar)
130  Fatal("SetParContainers", "No DIGI parameter found: %s",
131  parsetname.Data());
132  fDigiParameterList->Add(digipar);
133  }
134  if (parsetname.BeginsWith("SDSStripTotDigiPar")) {
135  PndSdsTotDigiPar* totdigipar =
136  (PndSdsTotDigiPar*)(rtdb->getContainer(parsetname.Data()));
137  if (!totdigipar)
138  Fatal("SetParContainers", "No TOT parameter found: %s",
139  parsetname.Data());
140  fChargeDigiParameterList->Add(totdigipar);
141  }
142  } // while
143 
144  // //read params for lumi alignment
145  // TList* theAlignLMDContNames = themvdcontfact->GetAlignParNames();
146  // Info("SetParContainers()","AlignLMD The container names list contains %i
147  // entries",theAlignLMDContNames->GetEntries());
148  // TIter cfAlIter(theAlignLMDContNames);
149  // while (TObjString* contname = (TObjString*)cfAlIter()) {
150  // TString parsetname = contname->String();
151  // Info("SetParContainers()",parsetname.Data());
152  // PndLmdAlignPar *lmdalignpar =
153  // (PndLmdAlignPar*)(rtdb->getContainer(parsetname.Data()));
154  // if(!lmdalignpar) Fatal("SetParContainers","No ALIGN parameter found:
155  // %s",parsetname.Data());
156  // fAlignParamList->Add(lmdalignpar);
157  // }
159 }
Charge Digitization Parameter Class for SDS.
Digitization Parameter Class for MVD-Strip part.
TList * GetDigiParNames()
TList * fDigiParameterList
Digitization Parameters.
virtual void PndSdsStripClusterTask::SetParContainersMQ ( TList *  )
inlinevirtualinherited

Reimplemented in PndMvdStripClusterTask.

Definition at line 127 of file PndSdsStripClusterTask.h.

Referenced by PndSdsStripClusterTask::InitMQ().

127 {}; //tempList //[R.K.03/2017] unused variable(s)
void PndPersistencyTask::SetPersistency ( Bool_t  val = kTRUE)
inlineinherited

Definition at line 31 of file PndPersistencyTask.h.

References PndPersistencyTask::fPersistency, and val.

Referenced by barrelTrackFinder(), digi_complete(), digi_complete_newSTT(), digiOnly_complete(), PndBarrelTrackFinder::PndBarrelTrackFinder(), PndCATracking::PndCATracking(), PndDrcHitFinder::PndDrcHitFinder(), PndEmc2DLocMaxFinder::PndEmc2DLocMaxFinder(), PndEmcExpClusterSplitter::PndEmcExpClusterSplitter(), PndEmcFullDigiTask::PndEmcFullDigiTask(), PndEmcFWEndcapDigi::PndEmcFWEndcapDigi(), PndEmcFWEndcapTimebasedWaveforms::PndEmcFWEndcapTimebasedWaveforms(), PndEmcHitProducer::PndEmcHitProducer(), PndEmcHitsToWaveform::PndEmcHitsToWaveform(), PndEmcMakeBump::PndEmcMakeBump(), PndEmcMakeCluster::PndEmcMakeCluster(), PndEmcMakeClusterOnline::PndEmcMakeClusterOnline(), PndEmcMakeDigi::PndEmcMakeDigi(), PndEmcMakeRecoHit::PndEmcMakeRecoHit(), PndEmcMultiWaveformToCalibratedDigi::PndEmcMultiWaveformToCalibratedDigi(), PndEmcPhiBumpSplitter::PndEmcPhiBumpSplitter(), PndEmcTmpWaveformToDigi::PndEmcTmpWaveformToDigi(), PndEmcWaveformToCalibratedDigi::PndEmcWaveformToCalibratedDigi(), PndEmcWaveformToDigi::PndEmcWaveformToDigi(), PndFtofHitProducerIdeal::PndFtofHitProducerIdeal(), PndFtsCATracking::PndFtsCATracking(), PndFtsHitProducerIdeal::PndFtsHitProducerIdeal(), PndFtsHitProducerRealFast::PndFtsHitProducerRealFast(), PndFtsHitProducerRealFull::PndFtsHitProducerRealFull(), PndFtsHoughTrackerTask::PndFtsHoughTrackerTask(), PndGemDigitize::PndGemDigitize(), PndGemFindHits::PndGemFindHits(), PndIdealTrackFinder::PndIdealTrackFinder(), PndLmdPixelClusterTask::PndLmdPixelClusterTask(), PndLmdPixelHitProducerFast::PndLmdPixelHitProducerFast(), PndMdtClusterTask::PndMdtClusterTask(), PndMdtDigitization::PndMdtDigitization(), PndMdtHitProducerIdeal::PndMdtHitProducerIdeal(), PndMdtPointsToWaveform::PndMdtPointsToWaveform(), PndMdtTrkProducer::PndMdtTrkProducer(), PndMissingPzCleanerTask::PndMissingPzCleanerTask(), PndMvdGemTrackFinderOnHits::PndMvdGemTrackFinderOnHits(), PndMvdHitProducerIdeal::PndMvdHitProducerIdeal(), PndMvdPixelClusterTask::PndMvdPixelClusterTask(), PndMvdTimeWalkCorrTask::PndMvdTimeWalkCorrTask(), PndMvdToPix4ClusterTask::PndMvdToPix4ClusterTask(), PndRecoKalmanTask::PndRecoKalmanTask(), PndRecoKalmanTask2::PndRecoKalmanTask2(), PndRecoMultiKalmanTask::PndRecoMultiKalmanTask(), PndRecoMultiKalmanTask2::PndRecoMultiKalmanTask2(), PndRichHitFinder::PndRichHitFinder(), PndRichHitProducer::PndRichHitProducer(), PndSciTDigiTask::PndSciTDigiTask(), PndSciTHitProducerIdeal::PndSciTHitProducerIdeal(), PndSdsHitProducerIdeal::PndSdsHitProducerIdeal(), PndSdsHybridHitProducer::PndSdsHybridHitProducer(), PndSdsIdealClusterTask::PndSdsIdealClusterTask(), PndSdsIdealRecoTask::PndSdsIdealRecoTask(), PndSdsNoiseProducer::PndSdsNoiseProducer(), PndSdsPixelClusterTask::PndSdsPixelClusterTask(), PndSdsStripClusterTask::PndSdsStripClusterTask(), PndSdsStripHitProducer::PndSdsStripHitProducer(), PndSdsTimeWalkCorrTask::PndSdsTimeWalkCorrTask(), PndSttFindTracks::PndSttFindTracks(), PndSttHelixHitProducer::PndSttHelixHitProducer(), PndSttHitProducerIdeal::PndSttHitProducerIdeal(), PndSttHitProducerRealFast::PndSttHitProducerRealFast(), PndSttHitProducerRealFull::PndSttHitProducerRealFull(), PndSttMatchTracks::PndSttMatchTracks(), PndSttMvdGemTracking::PndSttMvdGemTracking(), PndTrackSmearTask::PndTrackSmearTask(), PndTrkTracking2::PndTrkTracking2(), reco(), reco_complete(), reco_complete_gf2(), reco_complete_newSTT(), reco_complete_sec(), recoideal_complete(), PndMvdClusterTask::SetPersistance(), PndMvdDigiTask::SetPersistance(), PndLmdPixelHitProducerFast::SetPersistance(), PndSdsHitProducerIdeal::SetPersistance(), PndSttMvdGemTracking::SetPersistenc(), PndMdtClusterTask::SetPersistence(), PndSttHelixHitProducer::SetPersistence(), PndMissingPzCleanerTask::SetPersistence(), PndFtsHitProducerRealFast::SetPersistence(), PndFtsHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), PndIdealTrackFinder::SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcFWEndcapDigi::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapTimebasedWaveforms::SetStorageOfData(), PndEmcMakeDigi::SetStorageOfData(), PndMdtPointsToWaveform::SetStorageOfData(), PndEmc2DLocMaxFinder::SetStorageOfData(), PndEmcMakeCluster::SetStorageOfData(), PndEmcHitsToWaveform::SetStorageOfData(), PndEmcMakeBump::SetStorageOfData(), PndEmcTmpWaveformToDigi::SetStorageOfData(), PndEmcWaveformToDigi::SetStorageOfData(), PndEmcWaveformToCalibratedDigi::SetStorageOfData(), PndEmcMultiWaveformToCalibratedDigi::SetStorageOfData(), PndEmcExpClusterSplitter::SetStorageOfData(), PndEmcPhiBumpSplitter::SetStorageOfData(), standard_tracking(), and PndEmcFullDigiTask::StoreDigi().

31 { fPersistency = val; }
Double_t val[nBoxes][nFEBox]
Definition: createCalib.C:11

Member Data Documentation

FairRun* PndLmdStripClusterTask::ana

Definition at line 37 of file PndLmdStripClusterTask.h.

Referenced by SetParContainers().

PndSdsChargeWeightingAlgorithms* PndSdsStripClusterTask::fChargeAlgos
protectedinherited
std::map<const char*,PndSdsChargeConversion*> PndSdsStripClusterTask::fChargeConverter
protectedinherited
Double_t PndSdsStripClusterTask::fChargeCut
protectedinherited
TList* PndSdsStripClusterTask::fChargeDigiParameterList
protectedinherited
TString PndSdsStripClusterTask::fClustBranchName
protectedinherited
TClonesArray* PndSdsStripClusterTask::fClusterArray
protectedinherited
std::map<const char*,PndSdsStripClusterer*> PndSdsStripClusterTask::fClusterFinderList
protectedinherited
Int_t PndSdsStripClusterTask::fClusterType
protectedinherited
PndSdsChargeConversion* PndSdsStripClusterTask::fCurrentChargeConverter
protectedinherited
PndSdsStripClusterer* PndSdsStripClusterTask::fCurrentClusterfinder
protectedinherited
PndSdsStripDigiPar* PndSdsStripClusterTask::fCurrentDigiPar
protectedinherited
PndSdsCalcStrip* PndSdsStripClusterTask::fCurrentStripCalcBot
protectedinherited
PndSdsCalcStrip* PndSdsStripClusterTask::fCurrentStripCalcTop
protectedinherited
TClonesArray* PndSdsStripClusterTask::fDigiArray
protectedinherited
PndSdsStripDigiPar* PndSdsStripClusterTask::fDigiPar
protectedinherited

Definition at line 190 of file PndSdsStripClusterTask.h.

Referenced by PndSdsStripClusterTask::operator=().

TList* PndSdsStripClusterTask::fDigiParameterList
protectedinherited
FairEventHeader* PndSdsStripClusterTask::fEventHeader
protectedinherited
Int_t PndSdsStripClusterTask::fFEcolumns
protectedinherited

Definition at line 168 of file PndSdsStripClusterTask.h.

Referenced by PndSdsStripClusterTask::operator=().

Int_t PndSdsStripClusterTask::fFErows
protectedinherited

Definition at line 169 of file PndSdsStripClusterTask.h.

Referenced by PndSdsStripClusterTask::operator=().

TString PndSdsTask::fFolderName
protectedinherited
BinaryFunctor* PndSdsStripClusterTask::fFunctor
protectedinherited
PndGeoHandling* PndLmdStripClusterTask::fGeoH

Definition at line 36 of file PndLmdStripClusterTask.h.

Referenced by Backmap(), Exec(), and PndLmdStripClusterTask().

TClonesArray* PndSdsStripClusterTask::fHitArray
protectedinherited
Int_t PndSdsTask::fInBranchId
protectedinherited
TString PndSdsTask::fInBranchName
protectedinherited
bool PndLmdStripClusterTask::flagMS
private

Definition at line 44 of file PndLmdStripClusterTask.h.

Referenced by Backmap(), PndLmdStripClusterTask(), and SetMSflag().

Int_t PndSdsTask::fOutBranchId
protectedinherited

Definition at line 44 of file PndSdsTask.h.

Referenced by PndSdsTask::SetInBranchId().

TString PndSdsTask::fOutBranchName
protectedinherited
TString PndSdsStripClusterTask::fPath
protectedinherited
Double_t PndLmdStripClusterTask::fPbeam
private

Definition at line 46 of file PndLmdStripClusterTask.h.

Referenced by AddMSErr(), and Init().

Int_t PndSdsStripClusterTask::fRadChannel
protectedinherited

Definition at line 171 of file PndSdsStripClusterTask.h.

Referenced by PndSdsStripClusterTask::operator=().

Int_t PndSdsStripClusterTask::fRadTime
protectedinherited

Definition at line 172 of file PndSdsStripClusterTask.h.

Referenced by PndSdsStripClusterTask::operator=().

PndSensorNamePar* PndSdsStripClusterTask::fSensorNamePar
protectedinherited
Double_t PndSdsStripClusterTask::fSingleStripChargeThreshold
protectedinherited
std::map<const char*,PndSdsCalcStrip*> PndSdsStripClusterTask::fStripCalcBot
protectedinherited
std::map<const char*,PndSdsCalcStrip*> PndSdsStripClusterTask::fStripCalcTop
protectedinherited
FairRuntimeDb* PndLmdStripClusterTask::rtdb

Definition at line 38 of file PndLmdStripClusterTask.h.

Referenced by Init(), and SetParContainers().


The documentation for this class was generated from the following files: