// $Id: ERunParsPmtsFiller.cc,v 1.12 2005/04/20 12:26:37 thea Exp $
// Alessandro Thea created Feb, 18 2004
/*****************************************************************************
* ESAF: Euso Simulation and Analysis Framework *
* *
* Id: ERunParsPmtsFiller *
* Package: Electronics *
* Coordinator: Marco.Pallavicini *
* *
*****************************************************************************/
#include "ERunParsPmtsFiller.hh"
#include "EusoElectronics.hh"
#include "Photomultiplier.hh"
#include "ERunParameters.hh"
#include "PmtGeometry.hh"
#include "FrontEndChip.hh"
#include "MacroCell.hh"
ClassImp(ERunParsPmtsFiller)
//______________________________________________________________________________
ERunParsPmtsFiller::ERunParsPmtsFiller( EusoElectronics* ee ) {
//
// Constructor
//
fElectronics = ee;
}
//______________________________________________________________________________
ERunParsPmtsFiller::~ERunParsPmtsFiller() {
//
// Destructor
//
}
//______________________________________________________________________________
void ERunParsPmtsFiller::Fill( ERunParameters* rpar ) {
//
// Fill
//
EPmtData& d = rpar->fPmtData;
// PmtGeometry static data
d.fPmtSide = PmtGeometry::Side();
d.fPmtHeight = 27*mm; //FIXME pmtgeo does
// not contains pmt's height
// at ths time
d.fPadSide = (PmtGeometry::Side()
-2*PmtGeometry::DeadBorder()
-(PmtGeometry::Rows()-1)
*PmtGeometry::DeadInnerStrip())
/PmtGeometry::Rows();
d.fPadGap = PmtGeometry::DeadInnerStrip();
d.fBorderWidth = PmtGeometry::DeadBorder();
d.fNumPads = PmtGeometry::NumPads();
d.fNumRows = PmtGeometry::Rows();
d.fNumCols = PmtGeometry::NumPads()
/PmtGeometry::Rows();
Photomultiplier *pmt = fElectronics->Pmt(0);
// Photomultiplier static members
d.fQuantum = Photomultiplier::GetQuantum();
d.fGain = Photomultiplier::GetGain();
d.fGainSigma = Photomultiplier::GetGainSigma();
d.fWidth = Photomultiplier::GetWidth();
d.fGtuLength = Photomultiplier::GetGtuLength();
for ( Int_t i(0); i < fElectronics->NumPmt(); i++ ) {
pmt = fElectronics->Pmt(i);
rpar->fNumPmts++;
EPmtGeo* p = new( (*(rpar->fPmts))[rpar->fNumPmts-1]) EPmtGeo();
p->fStartUId = pmt->GetStartUniqueId();
p->fLastUId = pmt->GetLastUniqueId();
p->fFee = pmt->FrontEnd()->Id();
p->fEC = pmt->ElemCell()->Id();
p->fMC = pmt->Cell()->Id();
//FIXME: these are local fs coordinates
//add FocalPlane::fPos.Z
p->fCenterX = pmt->Geometry()->Center().X();
p->fCenterY = pmt->Geometry()->Center().Y();
p->fCenterZ = pmt->Geometry()->Center().Z();
p->fNormX = pmt->Geometry()->Normal().X();
p->fNormY = pmt->Geometry()->Normal().Y();
p->fNormZ = pmt->Geometry()->Normal().Z();
p->fYAxisX = pmt->Geometry()->GetY().X();
p->fYAxisY = pmt->Geometry()->GetY().Y();
p->fYAxisZ = pmt->Geometry()->GetY().Z();
}
// nightglow rates
rpar->fChipNightGlowRates.Set(fElectronics->NumElemCell());
for( Int_t i(0); i<fElectronics->NumElemCell(); i++) {
rpar->fChipNightGlowRates[i] = fElectronics->ElemCell(i)->FrontEnd()->GetNightGlowRate()*microsecond;
// cout << "filler " << rpar->fChipNightGlowRates[i] << endl;
}
}