Universita' di GenovaINFN Sezione di Genova  
AIRWATCH / EUSO Genova

ERunParsPmtsFiller - source file

// $Id: ERunParsPmtsFiller.cc,v 1.13 2005/10/02 14:17:55 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"

using namespace sou;

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;
    }
    
}
About Us | EUSO Official Website | Web pages created by Roberto Pesce and Alessandro Thea - Last Update Wed Nov 16 16:57:39 2005 Wed Nov 16 16:29:22 2005