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

#include <PndMvdStripClusterTask.h>

Inheritance diagram for PndMvdStripClusterTask:
PndSdsStripClusterTask PndSdsTask PndPersistencyTask

Public Member Functions

 PndMvdStripClusterTask ()
 
virtual ~PndMvdStripClusterTask ()
 
virtual void GetParList (TList *tempList)
 
virtual void SetParContainersMQ (TList *tempList)
 
void SetBranchNames (TString inBranchname, TString outHitBranchname, TString outClustBranchname, TString folderName)
 
virtual void SetBranchNames ()
 
virtual void SetParContainers ()
 
virtual void SetCalculators ()
 
 ClassDef (PndMvdStripClusterTask, 3)
 
virtual InitStatus Init ()
 
virtual InitStatus ReInit ()
 
virtual void InitMQ (TList *tempList)
 
virtual void ExecMQ (TList *inputList, TList *outputList)
 
virtual void SetInBranchId ()
 
virtual void Exec (Option_t *opt)
 
virtual void Finish ()
 
void SetPersistency (Bool_t val=kTRUE)
 
Bool_t GetPersistency ()
 

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)
 
Bool_t Backmap (TVector2 meantopPoint, Double_t toperr, TVector2 meanbotPoint, Double_t boterr, TVector3 &hitpos, TMatrixD &hitCov, Int_t &sensorID)
 
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
 
PndGeoHandlingfGeoH
 
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
 

Detailed Description

Definition at line 12 of file PndMvdStripClusterTask.h.

Constructor & Destructor Documentation

PndMvdStripClusterTask::PndMvdStripClusterTask ( )

Default constructor

Definition at line 17 of file PndMvdStripClusterTask.cxx.

17  :
18 PndSdsStripClusterTask("MVD Strip Clusterisation Task")
19 {
20 }
PndMvdStripClusterTask::~PndMvdStripClusterTask ( )
virtual

Destructor

Definition at line 23 of file PndMvdStripClusterTask.cxx.

24 {
25 }

Member Function Documentation

Bool_t PndSdsStripClusterTask::Backmap ( TVector2  meantopPoint,
Double_t  toperr,
TVector2  meanbotPoint,
Double_t  boterr,
TVector3 &  hitpos,
TMatrixD hitCov,
Int_t &  sensorID 
)
protectedinherited

Definition at line 775 of file PndSdsStripClusterTask.cxx.

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

Referenced by PndSdsStripClusterTask::Exec().

777 {
778  // BACKMAPPING
779  // get the backmapped point
780 
781  TVector3 localpos;
782  TMatrixD locCov(3,3);
783  Double_t t, b;
784 
785  Double_t errZ = 2.*fGeoH->GetSensorDimensionsShortId(sensorID).Z()/TMath::Sqrt(12.0);
786 
787  TVector2 onsensorPoint =
789  // here we assume the sensor system to be in the _Middle_ of the volume
790  localpos.SetXYZ( onsensorPoint.X(), onsensorPoint.Y(), 0.);
791 
792  // let's see if we're still on the sensor (cut combinations with noise off)
793  if(fabs(localpos.X()) > fabs(fCurrentDigiPar->GetTopAnchor().X())) return kFALSE;
794  if(fabs(localpos.Y()) > fabs(fCurrentDigiPar->GetTopAnchor().Y())) return kFALSE;
795 
796  //do the transformation from sensor to lab frame
797  hitPos = fGeoH->LocalToMasterShortId(localpos,sensorID);
798 
799  // calculate the errors corresponding to a skewed system,
800  // directions orthogonal to strip orientation
803  locCov[0][0]=t*t+b*b;
806  locCov[1][1]=t*t+b*b;
807  locCov[2][2]=errZ*errZ;
808 
809  //do the transformation from sensor to lab frame
810  hitCov = fGeoH->LocalToMasterErrorsShortId(locCov,sensorID);
811  //hitCov = locCov;
812  return kTRUE;
813 }
friend F32vec4 cos(const F32vec4 &a)
Definition: P4_F32vec4.h:112
TTree * b
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
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 PndLmdStripClusterTask::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 PndLmdStripClusterTask::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
PndMvdStripClusterTask::ClassDef ( PndMvdStripClusterTask  ,
 
)
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 PndSdsStripClusterTask::Exec ( Option_t *  opt)
virtualinherited

Virtual method Exec

Reimplemented in PndLmdStripClusterTask.

Definition at line 286 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::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, PndSdsStripClusterTask::fGeoH, PndSdsStripClusterTask::fHitArray, PndSdsStripClusterTask::FillClusterFinders(), PndSdsTask::fInBranchName, 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().

Referenced by PndSdsStripClusterTask::ExecMQ().

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

Reimplemented from PndSdsStripClusterTask.

Definition at line 27 of file PndMvdStripClusterTask.cxx.

References PndSdsStripClusterTask::fSensorNamePar.

28 {
29  PndSdsStripDigiPar* digipar = new PndSdsStripDigiPar("MVDStripDigiParRect");
30  tempList->Add(digipar);
31 
32  digipar = new PndSdsStripDigiPar("MVDStripDigiParTrap");
33  tempList->Add(digipar);
34 
35  PndSdsTotDigiPar* totpar = new PndSdsTotDigiPar("MVDStripTotDigiParRect");
36  tempList->Add(totpar);
37 
38  totpar = new PndSdsTotDigiPar("MVDStripTotDigiParTrap");
39  tempList->Add(totpar);
40 
41  fSensorNamePar = new PndSensorNamePar("PndSensorNamePar");
42  tempList->Add(fSensorNamePar);
43 }
Charge Digitization Parameter Class for SDS.
Digitization Parameter Class for MVD-Strip part.
PndSensorNamePar * fSensorNamePar
Unique match between SensorID and path in TGeoManager.
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(), PndDiscTaskReconstruction::Init(), PndRichHitProducer::Init(), PndSttHitProducerRealFast::Init(), PndSttHelixHitProducer::Init(), PndDiscTaskPID::Init(), PndIdealTrackFinder::Init(), PndSttMvdGemTracking::Init(), PndMdtTrkProducer::Init(), PndFtsHitProducerRealFull::Init(), PndLmdPixelClusterTask::Init(), PndSttHitProducerRealFull::Init(), PndLmdStripClusterTask::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 PndSdsStripClusterTask::Init ( )
virtualinherited

Reimplemented in PndLmdStripClusterTask.

Definition at line 234 of file PndSdsStripClusterTask.cxx.

References PndSdsStripClusterTask::eta_rect, PndSdsStripClusterTask::eta_trap, PndSdsStripClusterTask::etahistofile, PndSdsStripClusterTask::fClustBranchName, PndSdsStripClusterTask::fClusterArray, PndSdsStripClusterTask::fDigiArray, PndSdsTask::fFolderName, PndSdsStripClusterTask::fFunctor, PndSdsStripClusterTask::fHitArray, PndSdsTask::fInBranchName, PndSdsTask::fOutBranchName, PndSdsStripClusterTask::fPath, PndPersistencyTask::GetPersistency(), PndSdsTask::SetBranchNames(), PndSdsStripClusterTask::SetCalculators(), and PndSdsStripClusterTask::SetInBranchId().

235 {
236 
237  SetBranchNames();
238 
239  FairRootManager* ioman = FairRootManager::Instance();
240  if ( ! ioman )
241  {
242  std::cout << "-E- PndSdsStripClusterTask::Init: "
243  << "RootManager not instantiated!" << std::endl;
244  return kFATAL;
245  }
246 
247  fFunctor = new TimeGap();
248 
249  // Get input array
250  fDigiArray = (TClonesArray*) ioman->GetObject(fInBranchName);
251 //
252  if ( ! fDigiArray )
253  {
254  std::cout << "-W- PndSdsPixelClusterTask::Init: "
255  << "No SDSDigi array!" << std::endl;
256  return kERROR;
257  }
258  // set output arrays
259 
260 // fClusterArray = new TClonesArray("PndSdsClusterStrip");
261 // ioman->Register(fClustBranchName, fFolderName, fClusterArray, fPersistance);
262 
263  fClusterArray = ioman->Register(fClustBranchName, "PndSdsClusterStrip", fFolderName, GetPersistency());
264 
265 
266  //fHitArray = new TClonesArray("PndSdsHit");
267  fHitArray = ioman->Register(fOutBranchName, "PndSdsHit", fFolderName, GetPersistency());
268 
269  SetInBranchId();
270 
271  SetCalculators();
272 
273  fPath = getenv("VMCWORKDIR");
274  fPath += "/macro/params/interstrippos_vs_eta_histos.root";
275 
276  etahistofile = new TFile(fPath,"READ");
277  eta_rect = (TH2F*)etahistofile->Get("posvseta rect");
278  eta_trap = (TH2F*)etahistofile->Get("posvseta trap");
279 
280  Info("Init","Initialisation successfull");
281  return kSUCCESS;
282 }
TString fOutBranchName
Definition: PndSdsTask.h:40
TString fInBranchName
Definition: PndSdsTask.h:39
virtual void SetBranchNames()=0
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
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 PndMvdStripClusterTask::SetBranchNames ( TString  inBranchname,
TString  outHitBranchname,
TString  outClustBranchname,
TString  folderName 
)

Definition at line 57 of file PndMvdStripClusterTask.cxx.

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

58 {
59  fInBranchName = inBranchname;
60  fOutBranchName = outHitBranchname;
61  fClustBranchName = outClustBranchname;
62  fFolderName = folderName;
63 }
TString fOutBranchName
Definition: PndSdsTask.h:40
TString fInBranchName
Definition: PndSdsTask.h:39
TString fFolderName
Definition: PndSdsTask.h:41
void PndMvdStripClusterTask::SetBranchNames ( )
virtual

Implements PndSdsTask.

Definition at line 66 of file PndMvdStripClusterTask.cxx.

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

67 {
68  if (FairRunAna::Instance() != 0 && FairRunAna::Instance()->IsTimeStamp())
69  fInBranchName = "MVDSortedStripDigis";
70  else
71  fInBranchName = "MVDStripDigis";
72 // fInBranchName = "MVDStripDigis";
73  fOutBranchName = "MVDHitsStrip";
74  fClustBranchName = "MVDStripClusterCand";
75  fFolderName = "PndMvd";
76 }
TString fOutBranchName
Definition: PndSdsTask.h:40
TString fInBranchName
Definition: PndSdsTask.h:39
TString fFolderName
Definition: PndSdsTask.h:41
void PndMvdStripClusterTask::SetCalculators ( )
virtual

Reimplemented from PndSdsStripClusterTask.

Definition at line 111 of file PndMvdStripClusterTask.cxx.

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

112 {
113  Info("SetCalculators","mvd");
115  TIter params(fDigiParameterList);
116  TIter totparams(fChargeDigiParameterList);
117  while( PndSdsStripDigiPar* digipar = (PndSdsStripDigiPar*)params() ){
118  PndSdsTotDigiPar* totdigipar = (PndSdsTotDigiPar*) totparams();
119  if ( 0==digipar ) continue;
120  const char* senstype = digipar->GetSensType();
121  if ( digipar->GetChargeConvMethod() == 1 ){
122  if(fVerbose>0) Info("SetCalculators()","Use Tot charge conversion for %s sensors",senstype);
124  totdigipar->GetChargingTime(),
125  totdigipar->GetConstCurrent(),
126  digipar->GetThreshold(),
127  totdigipar->GetClockFrequency(),
128  fVerbose);
129  }
130  else{
131  if(fVerbose>0) Info("SetCalculators()","Use Ideal charge conversion for %s sensors",senstype);
132  fChargeConverter[senstype] = new PndSdsIdealChargeConversion(digipar->GetNoise());
133  }
134  //fChargeAlgos[senstype] = new PndSdsChargeWeightingAlgorithms(fDigiArray, digipar->GetRaisingTime(),digipar->GetFallingRatio(),digipar->GetThreshold());
135  Int_t ClusterMod = digipar->GetClusterMod();
136  Int_t RadChannel = digipar->GetRadChannel();
137  Int_t RadTime = digipar->GetRadTime();
138  if(0==ClusterMod) {
139  fClusterFinderList[senstype] = new PndSdsSimpleStripClusterFinder(fInBranchId, RadChannel ); //search radius in channel no.
140  } else if(1==ClusterMod) {
141  fClusterFinderList[senstype] = new PndSdsStripAdvClusterFinder(fInBranchId, RadChannel, RadTime);
142  }
143  }
144 }
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 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 PndLmdStripClusterTask::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 PndLmdStripClusterTask::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 PndMvdStripClusterTask::SetParContainers ( )
virtual

Virtual method Init

Reimplemented from PndSdsStripClusterTask.

Definition at line 79 of file PndMvdStripClusterTask.cxx.

References PndSdsStripClusterTask::fChargeDigiParameterList, PndSdsStripClusterTask::fDigiParameterList, fVerbose, PndMvdContFact::GetDigiParNames(), rtdb, PndSdsStripClusterTask::SetParContainers(), and TString.

80 {
81  // called from the FairRun::Init()
82  // Caution: The Parameter Set is not filled from the DB IO, yet.
83  // This will be done just before this Tasks Init() is called.
84  FairRun* ana = FairRun::Instance();
85  FairRuntimeDb* rtdb=ana->GetRuntimeDb();
86  PndMvdContFact* themvdcontfact = (PndMvdContFact*)rtdb->getContFactory("PndMvdContFact");
87  fDigiParameterList->Clear();
88  fChargeDigiParameterList->Clear();
89  TList* theContNames = themvdcontfact->GetDigiParNames();
90  if(fVerbose>0) Info("SetParContainers()","The container names list contains %i entries",theContNames->GetEntries());
91  TIter cfIter(theContNames);
92  fDigiParameterList->Clear();
93  fChargeDigiParameterList->Clear();
94  while (TObjString* contname = (TObjString*)cfIter()) {
95  TString parsetname = contname->String();
96  if(fVerbose>0) Info("SetParContainers()","%s",parsetname.Data());
97  if(parsetname.BeginsWith("MVDStripDigiPar")){
98  PndSdsStripDigiPar* digipar = (PndSdsStripDigiPar*)(rtdb->getContainer(parsetname.Data()));
99  if ( ! digipar ) Fatal("SetParContainers","No DIGI parameter found: %s",parsetname.Data());
100  fDigiParameterList->Add(digipar);
101  }
102  if(parsetname.BeginsWith("MVDStripTotDigiPar")){
103  PndSdsTotDigiPar* totdigipar = (PndSdsTotDigiPar*)(rtdb->getContainer(parsetname.Data()));
104  if ( ! totdigipar ) Fatal("SetParContainers","No TOT parameter found: %s",parsetname.Data());
105  fChargeDigiParameterList->Add(totdigipar);
106  }
107  }//while
109 }
int fVerbose
Definition: poormantracks.C:24
Charge Digitization Parameter Class for SDS.
TList * GetDigiParNames()
Digitization Parameter Class for MVD-Strip part.
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
TList * fDigiParameterList
Digitization Parameters.
void PndMvdStripClusterTask::SetParContainersMQ ( TList *  tempList)
virtual

Reimplemented from PndSdsStripClusterTask.

Definition at line 46 of file PndMvdStripClusterTask.cxx.

References PndSdsStripClusterTask::fChargeDigiParameterList, and PndSdsStripClusterTask::fDigiParameterList.

47 {
48  fDigiParameterList->Add((PndSdsStripDigiPar*)tempList->FindObject("MVDStripDigiParTrap"));
49  fDigiParameterList->Add((PndSdsStripDigiPar*)tempList->FindObject("MVDStripDigiParRect"));
50 
51  fChargeDigiParameterList->Add((PndSdsTotDigiPar*)tempList->FindObject("MVDStripTotDigiParTrap"));
52  fChargeDigiParameterList->Add((PndSdsTotDigiPar*)tempList->FindObject("MVDStripTotDigiParRect"));
53 
54 }
Charge Digitization Parameter Class for SDS.
Digitization Parameter Class for MVD-Strip part.
TList * fDigiParameterList
Digitization Parameters.
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(), PndSttHitProducerIdeal::SetPersistence(), PndSttHitProducerRealFull::SetPersistence(), PndSttHitProducerRealFast::SetPersistence(), PndFtsHitProducerIdeal::SetPersistence(), PndTrackSmearTask::SetPersistence(), PndSciTHitProducerIdeal::SetPersistence(), PndIdealTrackFinder::SetPersistence(), PndSttMatchTracks::SetPersistence(), PndSttFindTracks::SetPersistence(), PndFtsHoughTrackerTask::SetPersistence(), PndTrkTracking2::SetPersistence(), PndEmcMakeRecoHit::SetStorageOfData(), PndEmcMakeClusterOnline::SetStorageOfData(), PndEmcFWEndcapDigi::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

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* PndSdsStripClusterTask::fGeoH
protectedinherited
TClonesArray* PndSdsStripClusterTask::fHitArray
protectedinherited
Int_t PndSdsTask::fInBranchId
protectedinherited
TString PndSdsTask::fInBranchName
protectedinherited
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
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

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