FairRoot/PandaRoot
PndSensorNamePar.cxx
Go to the documentation of this file.
1 #include <iostream>
2 #include "PndSensorNamePar.h"
3 
4 PndSensorNamePar::PndSensorNamePar(const char* name, const char* title, const char* context)
5  : FairParGenericSet(name,title,context), fSensorNames()
6 {
7  clear();
8  fSensorNames = new TObjArray();
9  fSensorNames->SetOwner(kTRUE);
10 
11 }
12 
14 FairParGenericSet(L)
15 {
16  fSensorNames = new TObjArray(*(L.GetSensorNames()));
17 }
18 
20 {
21  fSensorNames = new TObjArray(*(L.GetSensorNames()));
22  return *this;
23 }
24 
25 void PndSensorNamePar::putParams(FairParamList* list)
26 {
27  if(!list) return;
28  list->addObject("SensorNames", fSensorNames);
29 }
30 
31 Bool_t PndSensorNamePar::getParams(FairParamList* list)
32 {
33  if (!list) return kFALSE;
34  if (!list->fillObject("SensorNames",fSensorNames)) return kFALSE;
35  FillMap();
36  return kTRUE;
37 }
38 
40 {
41  if (SensorInList(name) < 0) {
42  fSensorNames->AddLast(name);
43  this->setChanged();
44  FairRun *fRun = FairRun::Instance();
45  this->setInputVersion(fRun->GetRunId(), 1);
46  fMapOfSensorNames[name->GetString()] = fSensorNames->GetEntries() - 1;
47  fMapOfSensorIndizes[fSensorNames->GetEntries() - 1] = name->GetString();
48 
49  return fSensorNames->GetEntries() - 1;
50  } else
51  return SensorInList(name);
52 
53 }
54 
55 std::vector<TString> PndSensorNamePar::GetSensorNamesWithString(TString identifier){
56  std::vector<TString> result;
57  for (auto& value : fMapOfSensorNames){
58  if (value.first.Contains(identifier)){
59  result.push_back(value.first);
60  }
61  }
62  return result;
63 }
64 
66 
68 {
69  std::cout<<"SensorNames:"<<std::endl;
70  std::cout<< "Entries: " << fSensorNames->GetEntries() << std::endl;
71 // for (int i = 0; i < fSensorNames->GetEntries(); i++){
72 // TObjString* mySensName = (TObjString*)fSensorNames->At(i);
73 // std::cout << i << ": " << mySensName->GetString().Data() << std::endl;
74 // }
75  for (std::map<Int_t, TString>::iterator iter = fMapOfSensorIndizes.begin(); iter != fMapOfSensorIndizes.end(); iter++){
76  std::cout << iter->first << ": " << iter->second.Data() << std::endl;
77  }
78 }
std::map< TString, Int_t > fMapOfSensorNames
Bool_t getParams(FairParamList *list)
Par setInputVersion(fRun->GetRunId(), 1)
PndSensorNamePar(const char *name="PndSensorNamePar", const char *title="Match between GeoManager path and SensorId", const char *context="TestDefaultContext")
Par setChanged()
Int_t SensorInList(TObjString *name)
std::map< Int_t, TString > fMapOfSensorIndizes
Int_t AddSensorName(TObjString *name)
PndSensorNamePar & operator=(const PndSensorNamePar &L)
FairRunAna * fRun
Definition: hit_dirc.C:58
TObjArray * GetSensorNames() const
TObjArray * fSensorNames
TString name
std::vector< TString > GetSensorNamesWithString(TString identifier)
ClassImp(PndAnaContFact)
void putParams(FairParamList *list)
Unique match between SensorID and path in TGeoManager.