HYDRA_development_version
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
hrpcdetector.cc
Go to the documentation of this file.
1 //*-- AUTHOR : Pablo Cabanelas
2 //*-- Created : 10/10/2005
3 //*-- Modified: 11/09/2006
4 //*-- Modified: 29/08/2007
5 
6 //_HADES_CLASS_DESCRIPTION
7 /////////////////////////////////////////////////////////////
8 //
9 // HRpcDetector
10 //
11 // The Rpc Time-of-Flight detector class
12 //
13 /////////////////////////////////////////////////////////////
14 
15 using namespace std;
16 #include "hrpcdetector.h"
17 #include "rpcdef.h"
18 #include "hcategory.h"
19 #include "hlinearcategory.h"
20 #include "hmatrixcategory.h"
21 #include "hrpcraw.h"
22 #include "hrpccal.h"
23 #include "hrpchit.h"
24 #include "hrpccluster.h"
25 #include "hades.h"
26 #include "hpario.h"
27 #include "hparrootfileio.h"
28 #include "hparasciifileio.h"
29 #include "hdetpario.h"
30 #include "hrpcparrootfileio.h"
31 #include "hrpcparasciifileio.h"
32 #include "hgeantmaxtrk.h"
33 #include "TClass.h"
34 #include "TArrayI.h"
35 #include <iostream>
36 #include <iomanip>
37 
38 ClassImp(HRpcDetector) // Rpc Time-of-Flight detector class
39 
40 
41 HRpcDetector::HRpcDetector(void) : HDetector("Rpc","The Rpc detector") {
42  // constructor
43  maxModules=1;
44  maxColumns=6;
45  maxCells=32;
46  maxEmptyChannels=40; //From 40-45 (DBOin spares) and from 50-70 (TRB spares)
47  maxComponents=maxColumns*maxCells; //geometry components per module
48 
49  modules = new TArrayI(getMaxSectors());
50 }
51 
53 }
54 
55 
56 HCategory* HRpcDetector::buildLinearCategory(const Text_t *classname,Float_t fillRate) {
57 
58  Int_t total_components;
59  total_components = getMaxSectors()*maxModules*maxColumns*(maxCells+maxEmptyChannels);
60 
61  HLinearCategory* category=new HLinearCategory(classname,(Int_t)(total_components*fillRate));
62 
63  return category;
64 }
65 
66 
67 HCategory *HRpcDetector::buildMatrixCategory(const Text_t* classname,Float_t fillRate) {
68 
69  HMatrixCategory* category=NULL;
70  Int_t* sizes = new Int_t[3];
71  Int_t* sizes2 = new Int_t[2];
72 
73  if (strcmp(classname,"HRpcClusterSim")==0 || strcmp(classname,"HRpcCluster")==0) {
74  sizes2[0]=getMaxSectors();
75  sizes2[1]=maxColumns*maxCells;
76  category=new HMatrixCategory(classname,2,sizes2,fillRate);
77  }
78 
79  else if (strcmp(classname,"HRpcRaw")==0) {
80  sizes[0]=getMaxSectors();
81  sizes[1]=maxColumns;
82  sizes[2]=maxCells+maxEmptyChannels;
83  category=new HMatrixCategory(classname,3,sizes,fillRate);
84  }
85  else if (strcmp(classname,"HGeantRpc")==0) {
86  sizes2[0]=getMaxSectors();
87  sizes2[1]=MAXTRKRPC;
88  category=new HMatrixCategory(classname,2,sizes2,fillRate);
89  }
90  else {
91  sizes[0]=getMaxSectors();
92  sizes[1]=maxColumns;
93  sizes[2]=maxCells;
94  category=new HMatrixCategory(classname,3,sizes,fillRate);
95  }
96 
97  delete [] sizes;
98  delete [] sizes2;
99 
100  return category;
101 }
102 
104  // builds the categories for the Rpc
105  switch (cat) {
106  case catRpcRaw : return buildMatrixCategory("HRpcRaw",0.5);
107  case catRpcCal : return buildMatrixCategory("HRpcCal",0.5);
108  case catRpcHit : return buildMatrixCategory("HRpcHit",0.5);
109  case catRpcCluster : return buildMatrixCategory("HRpcCluster",0.5);
110  case catRpcGeantRaw : return buildMatrixCategory("HGeantRpc",0.5); //FIXME: Only 2 locs for this Category
111  default : return NULL;
112  }
113 }
114 
116  // activates the input/output class for the parameters
117  // needed by the Rpc detector
118  if (strcmp(io->IsA()->GetName(),"HParOraIo")==0) {
119  io->setDetParIo("HRpcParIo");
120  return;
121  }
122  if (strcmp(io->IsA()->GetName(),"HParRootFileIo")==0) {
123  HRpcParRootFileIo* p=new HRpcParRootFileIo(((HParRootFileIo*)io)->getParRootFile());
124  io->setDetParIo(p);
125  }
126  if (strcmp(io->IsA()->GetName(),"HParAsciiFileIo")==0) {
127  HRpcParAsciiFileIo* p=new HRpcParAsciiFileIo(((HParAsciiFileIo*)io)->getFile());
128  io->setDetParIo(p);
129  }
130 }
131 
133  // writes the Rpc detector setup to the output
134  HDetParIo* out=output->getDetParIo("HRpcParIo");
135  if (out) return out->write(this);
136 
137  return kFALSE;
138 }
139 
140 
~HRpcDetector(void)
Definition: hrpcdetector.cc:52
Short_t Cat_t
Definition: haddef.h:8
virtual void setDetParIo(HDetParIo *)
Definition: hpario.cc:34
ClassImp(HRpcDetector) HRpcDetector
Definition: hrpcdetector.cc:38
HCategory * buildCategory(Cat_t cat)
virtual HDetParIo * getDetParIo(const Text_t *)
Definition: hpario.cc:50
Definition: hpario.h:11
const Cat_t catRpcRaw
Definition: rpcdef.h:7
const Cat_t catRpcGeantRaw
Definition: hgeantdef.h:15
void activateParIo(HParIo *io)
HCategory * buildLinearCategory(const Text_t *, Float_t)
Definition: hrpcdetector.cc:56
const Cat_t catRpcCal
Definition: rpcdef.h:8
const Cat_t catRpcCluster
Definition: rpcdef.h:10
return output
HCategory * buildMatrixCategory(const Text_t *, Float_t)
Definition: hrpcdetector.cc:67
#define MAXTRKRPC
Definition: hgeantmaxtrk.h:8
virtual Int_t write(HParSet *)
Definition: hdetpario.h:30
const Cat_t catRpcHit
Definition: rpcdef.h:9
Bool_t write(HParIo *io)