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

analyze GEM digis More...

#include <PndGemDigiAna.h>

Inheritance diagram for PndGemDigiAna:

Public Member Functions

 PndGemDigiAna ()
 
 PndGemDigiAna (Int_t iVerbose)
 
 PndGemDigiAna (TString taskName, Int_t iVerbose)
 
virtual ~PndGemDigiAna ()
 
virtual void Exec (Option_t *opt)
 
void SetVerbose (const Int_t &verbose)
 

Private Member Functions

void CreateHistos ()
 
void AnaHistos ()
 
virtual void SetParContainers ()
 
virtual void Finish ()
 
virtual InitStatus Init ()
 
virtual InitStatus ReInit ()
 
 ClassDef (PndGemDigiAna, 1)
 

Private Attributes

PndGemDigiParfDigiPar
 
TClonesArray * fGemDigiArray
 
Int_t fNofEvents
 event counter More...
 
TList * fHistoList
 
TClonesArray * fHistoArray
 

Detailed Description

analyze GEM digis

Author
R. Karabowicz r.kar.nosp@m.abow.nosp@m.icz@g.nosp@m.si.d.nosp@m.e
Date
19.03.2009 Compare the found digis. First version compares only the time between digis. For each strip the time of last digi on that strip is stored: DLTS By default the DLTS is set to -1. If strip is fired and the DLTS is different from -1, the histogram with time between digis is filled. Moreover, at any given time the DLTS will show for how long was the strip inactive.

Definition at line 33 of file PndGemDigiAna.h.

Constructor & Destructor Documentation

PndGemDigiAna::PndGemDigiAna ( )

Default constructor

Definition at line 33 of file PndGemDigiAna.cxx.

34  : FairTask("GEM Digis Ana", 1),
35  fDigiPar(NULL),
36  fGemDigiArray(NULL),
37  fNofEvents(0),
38  fHistoList(NULL),
39  fHistoArray(NULL)
40 {
41 }
TList * fHistoList
Definition: PndGemDigiAna.h:62
TClonesArray * fGemDigiArray
Definition: PndGemDigiAna.h:57
Int_t fNofEvents
event counter
Definition: PndGemDigiAna.h:60
PndGemDigiPar * fDigiPar
Definition: PndGemDigiAna.h:51
TClonesArray * fHistoArray
Definition: PndGemDigiAna.h:65
PndGemDigiAna::PndGemDigiAna ( Int_t  iVerbose)

Definition at line 45 of file PndGemDigiAna.cxx.

46  : FairTask("GEM Digis Ana", iVerbose) ,
47  fDigiPar(NULL),
48  fGemDigiArray(NULL),
49  fNofEvents(0),
50  fHistoList(NULL),
51  fHistoArray(NULL)
52 {
53 }
TList * fHistoList
Definition: PndGemDigiAna.h:62
TClonesArray * fGemDigiArray
Definition: PndGemDigiAna.h:57
Int_t fNofEvents
event counter
Definition: PndGemDigiAna.h:60
PndGemDigiPar * fDigiPar
Definition: PndGemDigiAna.h:51
Int_t iVerbose
TClonesArray * fHistoArray
Definition: PndGemDigiAna.h:65
PndGemDigiAna::PndGemDigiAna ( TString  taskName,
Int_t  iVerbose 
)

Definition at line 57 of file PndGemDigiAna.cxx.

58  : FairTask(taskName, iVerbose) ,
59  fDigiPar(NULL),
60  fGemDigiArray(NULL),
61  fNofEvents(0),
62  fHistoList(NULL),
63  fHistoArray(NULL)
64 {
65 }
TList * fHistoList
Definition: PndGemDigiAna.h:62
TClonesArray * fGemDigiArray
Definition: PndGemDigiAna.h:57
Int_t fNofEvents
event counter
Definition: PndGemDigiAna.h:60
PndGemDigiPar * fDigiPar
Definition: PndGemDigiAna.h:51
Int_t iVerbose
TClonesArray * fHistoArray
Definition: PndGemDigiAna.h:65
PndGemDigiAna::~PndGemDigiAna ( )
virtual

Destructor

Definition at line 69 of file PndGemDigiAna.cxx.

69 { }

Member Function Documentation

void PndGemDigiAna::AnaHistos ( )
private

Definition at line 245 of file PndGemDigiAna.cxx.

Referenced by Finish().

245  {
246 
247  //Int_t nofStations = fDigiPar->GetNStations(); //[R.K. 01/2017] unused variable?
248 }
PndGemDigiAna::ClassDef ( PndGemDigiAna  ,
 
)
private
void PndGemDigiAna::CreateHistos ( )
private

Definition at line 192 of file PndGemDigiAna.cxx.

References fDigiPar, fHistoArray, fHistoList, fVerbose, PndGemStation::GetNSensors(), PndGemDigiPar::GetNStations(), PndGemStation::GetSensor(), PndGemSensor::GetSideChannels(), PndGemDigiPar::GetStation(), and sensor.

Referenced by Init().

192  {
193  fHistoList = new TList();
194 
195  if ( fVerbose )
196  cout << "ought to create histogram for " << fDigiPar->GetNStations() << " stations." << endl;
197 
198  Int_t nofStations = fDigiPar->GetNStations();
199  Int_t nofHists = 0;
200 
201  fHistoArray = new TClonesArray("TH1F", 5000);
202 
203  for ( Int_t istat = 0 ; istat < nofStations ; istat++ ) {
204  PndGemStation* station = (PndGemStation*)fDigiPar->GetStation(istat);
205 
206  if ( station->GetNSensors() != 2 ) {
207  std::cout << "will have problems with different numbers of sensors per station (" << station->GetNSensors() << ")" << std::endl;
208  }
209 
210  for ( Int_t isens = 0 ; isens < station->GetNSensors() ; isens++ ) {
211  PndGemSensor* sensor = (PndGemSensor*)station->GetSensor(isens);
212 
213  for ( Int_t iside = 0 ; iside < 2 ; iside++ ) {
214 
215  new ((*fHistoArray)[nofHists++]) TH1F(Form("fhLDTS_s%d_s%d_s%d",istat,isens,iside),
216  Form("Last digi time stamp, station %d, sensor %d, %s side",istat,isens,(iside?"back":"front")),
217  sensor->GetSideChannels(iside)+1,-0.5,sensor->GetSideChannels(iside)+0.5);
218  }
219  }
220  }
221 
222  for ( Int_t istat = 0 ; istat < nofStations ; istat++ ) {
223  PndGemStation* station = (PndGemStation*)fDigiPar->GetStation(istat);
224 
225  for ( Int_t isens = 0 ; isens < station->GetNSensors() ; isens++ ) {
226  //PndGemSensor* sensor = (PndGemSensor*)station->GetSensor(isens); //[R.K. 01/2017] unused variable?
227 
228  for ( Int_t iside = 0 ; iside < 2 ; iside++ ) {
229 
230  new ((*fHistoArray)[nofHists++]) TH1F(Form("fhTimeBetweenDigis_s%d_s%d_s%d",istat,isens,iside),
231  Form("Time between digis, station %d, sensor %d, %s side",istat,isens,(iside?"back":"front")),
232  100000,0,100000);
233  }
234  }
235  }
236 
237  if ( fVerbose ) {
238  cout << "HM, seems that fHistoArray is filled with histograms, and there are " << nofHists << " of them" << endl;
239  }
240 
241 }
int fVerbose
Definition: poormantracks.C:24
TList * fHistoList
Definition: PndGemDigiAna.h:62
TGeoVolume * sensor
Int_t GetSideChannels(Int_t si) const
Definition: PndGemSensor.h:114
PndGemSensor * GetSensor(Int_t iSensor)
Definition: PndGemStation.h:63
Int_t GetNSensors() const
Definition: PndGemStation.h:60
PndGemDigiPar * fDigiPar
Definition: PndGemDigiAna.h:51
Int_t GetNStations()
Definition: PndGemDigiPar.h:45
TClonesArray * fHistoArray
Definition: PndGemDigiAna.h:65
PndGemStation * GetStation(Int_t iStation)
void PndGemDigiAna::Exec ( Option_t *  opt)
virtual

Execution

Definition at line 142 of file PndGemDigiAna.cxx.

References Double_t, fDigiPar, fGemDigiArray, fHistoArray, fNofEvents, fVerbose, PndGemDigi::GetChannelNr(), PndGemDigiPar::GetNStations(), PndGemDigi::GetSensorNr(), PndGemDigi::GetSide(), and PndGemDigi::GetStationNr().

142  {
143 
144  if ( fVerbose ) {
145  cout << "IN EVENT GOT " << fGemDigiArray->GetEntries() << " hits." << endl;
146  cout << " - - - - - > " << fHistoArray->GetEntries() << " histograms" << endl;
147  }
148 
149  Int_t nofGemDigis = fGemDigiArray->GetEntries();
150 
151  PndGemDigi* gemDigi = NULL;
152 
153  for ( Int_t idigi = 0 ; idigi < nofGemDigis ; idigi++ ) {
154  gemDigi = (PndGemDigi*)fGemDigiArray->At(idigi);
155 
156  Int_t digiCode =
157  4*(gemDigi->GetStationNr()-1)+
158  2*(gemDigi->GetSensorNr()-1)+
159  gemDigi->GetSide();
160 
161  if ( digiCode < 0 || digiCode > 11 )
162  cout << "oops, wrong digiCode " << digiCode
163  << " from station " << gemDigi->GetStationNr()
164  << " sensor " << gemDigi->GetSensorNr()
165  << " side " << gemDigi->GetSide()
166  << endl;
167 
168  Double_t lastTime = ((TH1F*)fHistoArray->At(digiCode))->GetBinContent(gemDigi->GetChannelNr());
169 
170  if ( lastTime > 0. ) {
171  // cout << " DIGI on station " << gemDigi->GetStationNr()
172  // << " sensor " << gemDigi->GetSensorNr()
173  // << " side " << gemDigi->GetSide()
174  // << " channel " << gemDigi->GetChannelNr()
175  // << " came again at " << gemDigi->GetTimeStamp()
176  // << " after " << lastTime
177  // << endl;
178  ((TH1F*)fHistoArray->At(fDigiPar->GetNStations()*4+digiCode))->Fill(gemDigi->GetTimeStamp()-lastTime);
179 
180  }
181 
182  ((TH1F*)fHistoArray->At(digiCode))->SetBinContent(gemDigi->GetChannelNr(),gemDigi->GetTimeStamp());
183  }
184 
185  fNofEvents++;
186 
187 }
int fVerbose
Definition: poormantracks.C:24
TClonesArray * fGemDigiArray
Definition: PndGemDigiAna.h:57
Int_t GetStationNr() const
Definition: PndGemDigi.h:84
Int_t GetSensorNr() const
Definition: PndGemDigi.h:86
Double_t
Int_t fNofEvents
event counter
Definition: PndGemDigiAna.h:60
Double_t GetChannelNr() const
Definition: PndGemDigi.h:80
PndGemDigiPar * fDigiPar
Definition: PndGemDigiAna.h:51
Int_t GetNStations()
Definition: PndGemDigiPar.h:45
Int_t GetSide() const
Definition: PndGemDigi.h:88
TClonesArray * fHistoArray
Definition: PndGemDigiAna.h:65
void PndGemDigiAna::Finish ( )
privatevirtual

Finish

Definition at line 252 of file PndGemDigiAna.cxx.

References AnaHistos(), fHistoArray, fHistoList, fNofEvents, and next.

252  {
253  cout << "-------------------- PndGemDigiAna : Summary ------------------" << endl;
254  cout << " Events: " << setw(10) << fNofEvents << endl;
255  cout << "---------------------------------------------------------------------" << endl;
256 
257  AnaHistos();
258 
259  TFile* temp = gFile;
260  FairRootManager* ioman = FairRootManager::Instance();
261  gFile = ioman->GetOutFile();
262  gDirectory = (TDirectory*)gFile;
263 
264  gDirectory->mkdir("GemDigiAna");
265  gDirectory->cd("GemDigiAna");
266  TIter next(fHistoList);
267  for ( Int_t ihist = 0 ; ihist < fHistoArray->GetEntries() ; ihist++ ) {
268  fHistoArray->At(ihist)->Write();
269  }
270  gDirectory->cd("..");
271 
272  gFile = temp;
273 }
TList * fHistoList
Definition: PndGemDigiAna.h:62
Int_t fNofEvents
event counter
Definition: PndGemDigiAna.h:60
static int next[96]
Definition: ranlxd.cxx:374
TClonesArray * fHistoArray
Definition: PndGemDigiAna.h:65
InitStatus PndGemDigiAna::Init ( )
privatevirtual

Intialisation

Definition at line 72 of file PndGemDigiAna.cxx.

References CreateHistos(), fDigiPar, fGemDigiArray, PndGemDigiPar::GetNStations(), and rtdb.

72  {
73 
74  // Get and check FairRootManager
75  FairRootManager* ioman = FairRootManager::Instance();
76  if( !ioman ) {
77  cout << "-E- "<< GetName() <<"::Init: "
78  << "RootManager not instantised!" << endl;
79  return kERROR;
80  }
81 
82  // Get the pointer to the singleton FairRunAna object
83  FairRunAna* ana = FairRunAna::Instance();
84  if(NULL == ana) {
85  cout << "-E- "<< GetName() <<"::Init :"
86  <<" no FairRunAna object!" << endl;
87  return kERROR;
88  }
89  // Get the pointer to run-time data base
90  FairRuntimeDb* rtdb = ana->GetRuntimeDb();
91  if(NULL == rtdb) {
92  cout << "-E- "<< GetName() <<"::Init :"
93  <<" no runtime database!" << endl;
94  return kERROR;
95  }
96 
97  // Get Gem digi Array
98  fGemDigiArray = (TClonesArray*) ioman->GetObject("GEMDigi");
99  if ( !fGemDigiArray ) {
100  cout << "-E- " << GetName() << "::Init: No PndGemDigi array!" << endl;
101  return kERROR;
102  }
103 
104  // Get GEM digitisation parameter container
105  fDigiPar = (PndGemDigiPar*)(rtdb->getContainer("PndGemDetectors"));
106 
107  cout << "-I- " << fName.Data() << "::Init(). There are " << fDigiPar->GetNStations() << " GEM stations." << endl;
108  cout << "-I- " << fName.Data() << "::Init(). Initialization succesfull." << endl;
109 
110  CreateHistos();
111 
112  return kSUCCESS;
113 }
TClonesArray * fGemDigiArray
Definition: PndGemDigiAna.h:57
Digitization Parameter Class for GEM part.
Definition: PndGemDigiPar.h:31
FairRuntimeDb * rtdb
Definition: hit_dirc.C:66
PndGemDigiPar * fDigiPar
Definition: PndGemDigiAna.h:51
Int_t GetNStations()
Definition: PndGemDigiPar.h:45
InitStatus PndGemDigiAna::ReInit ( )
privatevirtual

Reinitialisation

Definition at line 117 of file PndGemDigiAna.cxx.

117  {
118 
119  return kSUCCESS;
120 }
void PndGemDigiAna::SetParContainers ( )
privatevirtual

Get parameter containers

Definition at line 124 of file PndGemDigiAna.cxx.

References fDigiPar, fNofEvents, and run.

124  {
125 
126  // Get run and runtime database
127  FairRunAna* run = FairRunAna::Instance();
128  if ( ! run ) Fatal("SetParContainers", "No analysis run");
129 
130  FairRuntimeDb* db = run->GetRuntimeDb();
131  if ( ! db ) Fatal("SetParContainers", "No runtime database");
132 
133  // Get GEM digitisation parameter container
134  fDigiPar = (PndGemDigiPar*)(db->getContainer("PndGemDetectors"));
135 
136  fNofEvents = 0;
137 }
Int_t run
Definition: autocutx.C:47
Digitization Parameter Class for GEM part.
Definition: PndGemDigiPar.h:31
Int_t fNofEvents
event counter
Definition: PndGemDigiAna.h:60
PndGemDigiPar * fDigiPar
Definition: PndGemDigiAna.h:51
void PndGemDigiAna::SetVerbose ( const Int_t &  verbose)
inline

Public modifiers

Definition at line 51 of file PndGemDigiAna.h.

References fVerbose, and verbose.

51 { fVerbose = verbose; };
int fVerbose
Definition: poormantracks.C:24
#define verbose

Member Data Documentation

PndGemDigiPar* PndGemDigiAna::fDigiPar
private

Definition at line 51 of file PndGemDigiAna.h.

Referenced by CreateHistos(), Exec(), Init(), and SetParContainers().

TClonesArray* PndGemDigiAna::fGemDigiArray
private

Definition at line 57 of file PndGemDigiAna.h.

Referenced by Exec(), and Init().

TClonesArray* PndGemDigiAna::fHistoArray
private

Definition at line 65 of file PndGemDigiAna.h.

Referenced by CreateHistos(), Exec(), and Finish().

TList* PndGemDigiAna::fHistoList
private

Definition at line 62 of file PndGemDigiAna.h.

Referenced by CreateHistos(), and Finish().

Int_t PndGemDigiAna::fNofEvents
private

event counter

Event counter

Definition at line 60 of file PndGemDigiAna.h.

Referenced by Exec(), Finish(), and SetParContainers().


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