FairRoot/PandaRoot
PndMvdStripClusterTask.cxx
Go to the documentation of this file.
1 // -------------------------------------------------------------------------
2 // ----- PndMvdStripClusterTask source file -----
3 // -------------------------------------------------------------------------
4 
6 #include "PndMvdContFact.h"
7 #include "FairRuntimeDb.h"
8 #include "FairRunAna.h"
14 #include "PndSdsTotDigiPar.h"
15 
16 // ----- Default constructor -------------------------------------------
18 PndSdsStripClusterTask("MVD Strip Clusterisation Task")
19 {
20 }
21 
22 // ----- Destructor ----------------------------------------------------
24 {
25 }
26 
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 }
44 
45 
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 }
55 
56 // ----- Manual I/O folders/branches ----------------------------------------------------
57 void PndMvdStripClusterTask::SetBranchNames(TString inBranchname, TString outHitBranchname, TString outClustBranchname, TString folderName)
58 {
59  fInBranchName = inBranchname;
60  fOutBranchName = outHitBranchname;
61  fClustBranchName = outClustBranchname;
62  fFolderName = folderName;
63 }
64 
65 // ----- Default I/O folder/branches ----------------------------------------------------
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 }
77 
78 // ----- Initialization of Parameter Containers -------------------------
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 }
110 
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 }
145 
146 
148 
int fVerbose
Definition: poormantracks.C:24
Int_t fInBranchId
Definition: PndSdsTask.h:43
TString fOutBranchName
Definition: PndSdsTask.h:40
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.
TList * GetDigiParNames()
TString fInBranchName
Definition: PndSdsTask.h:39
Digitization Parameter Class for MVD-Strip part.
virtual void SetParContainersMQ(TList *tempList)
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
TString fFolderName
Definition: PndSdsTask.h:41
PndSensorNamePar * fSensorNamePar
std::map< const char *, PndSdsChargeConversion * > fChargeConverter
Double_t GetChargingTime() const
ClassImp(PndAnaContFact)
TList * fDigiParameterList
Digitization Parameters.
virtual void GetParList(TList *tempList)
Unique match between SensorID and path in TGeoManager.