FairRoot/PandaRoot
PndSensorNamePar.h
Go to the documentation of this file.
1 //
2 // C++ Interface: PndSensorNamePar
3 //
4 #ifndef PNDSENSORNAMEPAR_H
5 #define PNDSENSORNAMEPAR_H
6 
7 
8 #include "FairParGenericSet.h"
9 #include "FairParamList.h"
10 #include "FairRun.h"
11 
12 #include "TObjArray.h"
13 #include "TObjString.h"
14 
15 #include <iostream>
16 #include <map>
17 
19 class PndSensorNamePar : public FairParGenericSet
20 {
21  public :
22  PndSensorNamePar (const char* name="PndSensorNamePar",
23  const char* title="Match between GeoManager path and SensorId",
24  const char* context="TestDefaultContext");
26  if(fSensorNames) delete fSensorNames;
27  };
28  void clear(void){};
29  void putParams(FairParamList* list);
30  Bool_t getParams(FairParamList* list);
31 
32  virtual void print(){Print();}
33  void Print();
34 
35  Int_t AddSensorName(TObjString* name);
36 
37  Int_t SensorInList(TObjString* name){
38 // for (int i = 0; i < fSensorNames->GetEntries();i++){
39 // TObjString* SensName = (TObjString*)fSensorNames->At(i);
40 // if (SensName->GetString() == name->GetString())
41 // return i;
42 // }
43 // return -1;
44  std::map<TString, Int_t>::iterator iter;
45  iter = fMapOfSensorNames.find(name->GetString());
46  if (iter != fMapOfSensorNames.end())
47  return iter->second;
48  else
49  return -1;
50  }
51 
52  void FillMap(){
53  for (int i = 0; i < fSensorNames->GetEntries();i++){
54  TObjString* SensName = (TObjString*)fSensorNames->At(i);
55  fMapOfSensorNames[SensName->GetString()] = i;
56  fMapOfSensorIndizes[i] = SensName->GetString();
57  }
58  }
59 
60  TString GetSensorName(Int_t index){
61 // if (index < fSensorNames->GetEntries()){
62 // TObjString* myString = (TObjString*)fSensorNames->At(index);
63 // return myString->GetString();
64 // }
65 // else{
66 // std::cout << "-E- PndSensorNamePar::GetSensorName index " << index
67 // << " out of bounds: " << fSensorNames->GetEntries() << std::endl;
68 // return "";
69 // }
70  std::map<Int_t, TString>::const_iterator iter;
71  iter = fMapOfSensorIndizes.find(index);
72  if (iter != fMapOfSensorIndizes.end()) {
73  return iter->second;
74  } else {
75  std::cout << "-E- PndSensorNamePar::GetSensorName index " << index << " not in list!";
76  return "";
77  }
78 
79  }
80 
81  TObjArray* GetSensorNames() const{return fSensorNames;}
82 
83  std::vector<TString> GetSensorNamesWithString(TString identifier);
84 
87 
89  output << "SensorNames:" << std::endl;
90  output << "Entries: " << par.fSensorNames->GetEntries() << std::endl;
91 
92  for (std::map<Int_t, TString>::const_iterator iter = par.fMapOfSensorIndizes.begin(); iter != par.fMapOfSensorIndizes.end(); iter++){
93  output << iter->first << ": " << iter->second.Data() << std::endl;
94  }
95  return output;
96  }
97 
98 
99 
100  private:
101  TObjArray* fSensorNames;
102  std::map<TString, Int_t> fMapOfSensorNames;
103  std::map<Int_t, TString> fMapOfSensorIndizes;
104 
105 
106 
108 };
109 
110 #endif
ClassDef(PndSensorNamePar, 1)
Int_t i
Definition: run_full.C:25
std::map< TString, Int_t > fMapOfSensorNames
Bool_t getParams(FairParamList *list)
friend std::ostream & operator<<(std::ostream &output, const PndSensorNamePar &par)
Double_t par[3]
TString GetSensorName(Int_t index)
PndSensorNamePar(const char *name="PndSensorNamePar", const char *title="Match between GeoManager path and SensorId", const char *context="TestDefaultContext")
Int_t SensorInList(TObjString *name)
std::map< Int_t, TString > fMapOfSensorIndizes
Int_t AddSensorName(TObjString *name)
PndSensorNamePar & operator=(const PndSensorNamePar &L)
FairParRootFileIo * output
Definition: sim_emc_apd.C:120
TObjArray * GetSensorNames() const
TObjArray * fSensorNames
TString name
std::vector< TString > GetSensorNamesWithString(TString identifier)
virtual void print()
void putParams(FairParamList *list)
Unique match between SensorID and path in TGeoManager.