ROOT logo
//*-- AUTHOR :  Pablo Cabanelas
//*-- Created : 10/10/2005
//*-- Modified: 11/09/2006
//*-- Modified: 29/08/2007

//_HADES_CLASS_DESCRIPTION
/////////////////////////////////////////////////////////////
//
//  HRpcDetector
//
//  The Rpc Time-of-Flight detector class
//
/////////////////////////////////////////////////////////////

using namespace std;
#include "hrpcdetector.h"
#include "rpcdef.h"
#include "hcategory.h"
#include "hlinearcategory.h"
#include "hmatrixcategory.h"
#include "hrpcraw.h"
#include "hrpccal.h"
#include "hrpchit.h"
#include "hrpccluster.h"
#include "hades.h"
#include "hpario.h"
#include "hparrootfileio.h"
#include "hparasciifileio.h"
#include "hdetpario.h"
#include "hrpcparrootfileio.h"
#include "hrpcparasciifileio.h"
#include "hgeantmaxtrk.h"
#include "TClass.h"
#include "TArrayI.h"
#include <iostream> 
#include <iomanip>

ClassImp(HRpcDetector) // Rpc Time-of-Flight detector class


HRpcDetector::HRpcDetector(void) : HDetector("Rpc","The Rpc detector") {
  // constructor
  maxModules=1;
  maxColumns=6;
  maxCells=32;
  maxEmptyChannels=40; //From 40-45 (DBOin spares) and from 50-70 (TRB spares)
  maxComponents=maxColumns*maxCells;  //geometry components per module
	
  modules = new TArrayI(getMaxSectors());
}

HRpcDetector::~HRpcDetector(void) {
}


HCategory* HRpcDetector::buildLinearCategory(const Text_t *classname,Float_t fillRate) {

  Int_t total_components;
  total_components = getMaxSectors()*maxModules*maxColumns*(maxCells+maxEmptyChannels);

  HLinearCategory* category=new HLinearCategory(classname,(Int_t)(total_components*fillRate));

  return category;
}


HCategory *HRpcDetector::buildMatrixCategory(const Text_t* classname,Float_t fillRate) {

  HMatrixCategory* category=NULL;
  Int_t* sizes   = new Int_t[3];
  Int_t* sizes2  = new Int_t[2];

  if (strcmp(classname,"HRpcClusterSim")==0 || strcmp(classname,"HRpcCluster")==0) {
    sizes2[0]=getMaxSectors();
    sizes2[1]=maxColumns*maxCells;                                    
    category=new HMatrixCategory(classname,2,sizes2,fillRate);   
  }

  else if (strcmp(classname,"HRpcRaw")==0) {
    sizes[0]=getMaxSectors();
    sizes[1]=maxColumns;
    sizes[2]=maxCells+maxEmptyChannels;  
    category=new HMatrixCategory(classname,3,sizes,fillRate);   
  }
  else if (strcmp(classname,"HGeantRpc")==0) {
    sizes2[0]=getMaxSectors();
    sizes2[1]=MAXTRKRPC;
    category=new HMatrixCategory(classname,2,sizes2,fillRate);   
  }
  else {
    sizes[0]=getMaxSectors();
    sizes[1]=maxColumns;
    sizes[2]=maxCells;  
    category=new HMatrixCategory(classname,3,sizes,fillRate);
  }

  delete [] sizes;
  delete [] sizes2;

  return category;
}

HCategory *HRpcDetector::buildCategory(Cat_t cat) {
  // builds the categories for the Rpc
  switch (cat) {
  case catRpcRaw      : return buildMatrixCategory("HRpcRaw",0.5);
  case catRpcCal      : return buildMatrixCategory("HRpcCal",0.5);
  case catRpcHit      : return buildMatrixCategory("HRpcHit",0.5);
  case catRpcCluster  : return buildMatrixCategory("HRpcCluster",0.5);
  case catRpcGeantRaw : return buildMatrixCategory("HGeantRpc",0.5); //FIXME: Only 2 locs for this Category
  default : return NULL;
  }
}

void HRpcDetector::activateParIo(HParIo* io) {
  // activates the input/output class for the parameters
  // needed by the Rpc detector
  if (strcmp(io->IsA()->GetName(),"HParOraIo")==0) {
    io->setDetParIo("HRpcParIo");
    return;
  }
  if (strcmp(io->IsA()->GetName(),"HParRootFileIo")==0) {
    HRpcParRootFileIo* p=new HRpcParRootFileIo(((HParRootFileIo*)io)->getParRootFile());
    io->setDetParIo(p);
  }
  if (strcmp(io->IsA()->GetName(),"HParAsciiFileIo")==0) {
    HRpcParAsciiFileIo* p=new HRpcParAsciiFileIo(((HParAsciiFileIo*)io)->getFile());
    io->setDetParIo(p);
  }
}

Bool_t HRpcDetector::write(HParIo* output) {
  // writes the Rpc detector setup to the output
  HDetParIo* out=output->getDetParIo("HRpcParIo");
  if (out) return out->write(this);

  return kFALSE;
}


 hrpcdetector.cc:1
 hrpcdetector.cc:2
 hrpcdetector.cc:3
 hrpcdetector.cc:4
 hrpcdetector.cc:5
 hrpcdetector.cc:6
 hrpcdetector.cc:7
 hrpcdetector.cc:8
 hrpcdetector.cc:9
 hrpcdetector.cc:10
 hrpcdetector.cc:11
 hrpcdetector.cc:12
 hrpcdetector.cc:13
 hrpcdetector.cc:14
 hrpcdetector.cc:15
 hrpcdetector.cc:16
 hrpcdetector.cc:17
 hrpcdetector.cc:18
 hrpcdetector.cc:19
 hrpcdetector.cc:20
 hrpcdetector.cc:21
 hrpcdetector.cc:22
 hrpcdetector.cc:23
 hrpcdetector.cc:24
 hrpcdetector.cc:25
 hrpcdetector.cc:26
 hrpcdetector.cc:27
 hrpcdetector.cc:28
 hrpcdetector.cc:29
 hrpcdetector.cc:30
 hrpcdetector.cc:31
 hrpcdetector.cc:32
 hrpcdetector.cc:33
 hrpcdetector.cc:34
 hrpcdetector.cc:35
 hrpcdetector.cc:36
 hrpcdetector.cc:37
 hrpcdetector.cc:38
 hrpcdetector.cc:39
 hrpcdetector.cc:40
 hrpcdetector.cc:41
 hrpcdetector.cc:42
 hrpcdetector.cc:43
 hrpcdetector.cc:44
 hrpcdetector.cc:45
 hrpcdetector.cc:46
 hrpcdetector.cc:47
 hrpcdetector.cc:48
 hrpcdetector.cc:49
 hrpcdetector.cc:50
 hrpcdetector.cc:51
 hrpcdetector.cc:52
 hrpcdetector.cc:53
 hrpcdetector.cc:54
 hrpcdetector.cc:55
 hrpcdetector.cc:56
 hrpcdetector.cc:57
 hrpcdetector.cc:58
 hrpcdetector.cc:59
 hrpcdetector.cc:60
 hrpcdetector.cc:61
 hrpcdetector.cc:62
 hrpcdetector.cc:63
 hrpcdetector.cc:64
 hrpcdetector.cc:65
 hrpcdetector.cc:66
 hrpcdetector.cc:67
 hrpcdetector.cc:68
 hrpcdetector.cc:69
 hrpcdetector.cc:70
 hrpcdetector.cc:71
 hrpcdetector.cc:72
 hrpcdetector.cc:73
 hrpcdetector.cc:74
 hrpcdetector.cc:75
 hrpcdetector.cc:76
 hrpcdetector.cc:77
 hrpcdetector.cc:78
 hrpcdetector.cc:79
 hrpcdetector.cc:80
 hrpcdetector.cc:81
 hrpcdetector.cc:82
 hrpcdetector.cc:83
 hrpcdetector.cc:84
 hrpcdetector.cc:85
 hrpcdetector.cc:86
 hrpcdetector.cc:87
 hrpcdetector.cc:88
 hrpcdetector.cc:89
 hrpcdetector.cc:90
 hrpcdetector.cc:91
 hrpcdetector.cc:92
 hrpcdetector.cc:93
 hrpcdetector.cc:94
 hrpcdetector.cc:95
 hrpcdetector.cc:96
 hrpcdetector.cc:97
 hrpcdetector.cc:98
 hrpcdetector.cc:99
 hrpcdetector.cc:100
 hrpcdetector.cc:101
 hrpcdetector.cc:102
 hrpcdetector.cc:103
 hrpcdetector.cc:104
 hrpcdetector.cc:105
 hrpcdetector.cc:106
 hrpcdetector.cc:107
 hrpcdetector.cc:108
 hrpcdetector.cc:109
 hrpcdetector.cc:110
 hrpcdetector.cc:111
 hrpcdetector.cc:112
 hrpcdetector.cc:113
 hrpcdetector.cc:114
 hrpcdetector.cc:115
 hrpcdetector.cc:116
 hrpcdetector.cc:117
 hrpcdetector.cc:118
 hrpcdetector.cc:119
 hrpcdetector.cc:120
 hrpcdetector.cc:121
 hrpcdetector.cc:122
 hrpcdetector.cc:123
 hrpcdetector.cc:124
 hrpcdetector.cc:125
 hrpcdetector.cc:126
 hrpcdetector.cc:127
 hrpcdetector.cc:128
 hrpcdetector.cc:129
 hrpcdetector.cc:130
 hrpcdetector.cc:131
 hrpcdetector.cc:132
 hrpcdetector.cc:133
 hrpcdetector.cc:134
 hrpcdetector.cc:135
 hrpcdetector.cc:136
 hrpcdetector.cc:137
 hrpcdetector.cc:138
 hrpcdetector.cc:139
 hrpcdetector.cc:140