emcTowerContentv1S.C

Go to the documentation of this file.
00001 #include "emcTowerContentv1S.h"
00002 #include <iostream>
00003 #include <iomanip>
00004 #include "EmcIndexer.h"
00005 #include "emcDataError.h"
00006 
00007 ClassImp(emcTowerContentv1S)
00008 
00009   using namespace std;
00010 
00011 float emcTowerContentv1S::fEnergyThreshold = 0.0001; // 0.1 MeV
00012 
00013 //_____________________________________________________________________________
00014   emcTowerContentv1S::emcTowerContentv1S()
00015 {
00016   Reset();
00017 }
00018 
00019 //_____________________________________________________________________________
00020 emcTowerContentv1S::emcTowerContentv1S(const emcTowerContentv1S& o)
00021   : emcTowerContent()
00022 {
00023   o.copyTo(*this);
00024 }
00025 
00026 //_____________________________________________________________________________
00027 emcTowerContentv1S&
00028 emcTowerContentv1S::operator=(const emcTowerContentv1S& o)
00029 {
00030   if ( this != &o )
00031     {
00032       o.copyTo(*this);
00033     }
00034   return *this;
00035 }
00036 
00037 //_____________________________________________________________________________
00038 emcTowerContentv1S::~emcTowerContentv1S()
00039 {
00040 }
00041 
00042 //_____________________________________________________________________________
00043 void
00044 emcTowerContentv1S::copyTo(emcTowerContentv1S& dest) const
00045 {
00046   dest.fHasCalib=fHasCalib;
00047   dest.fHasDC=fHasDC;
00048   dest.fFEM=fFEM;
00049   dest.fChannel=fChannel;
00050   dest.fErrorNeighbours=fErrorNeighbours;
00051   dest.fWarnNeighbours=fWarnNeighbours;
00052   dest.fTDC=fTDC;
00053   dest.fADC=fADC;
00054   dest.fTowerID=fTowerID;
00055   dest.fEnergy=fEnergy;
00056   dest.fTOF=fTOF;
00057   dest.fUncorrectedTOF=fUncorrectedTOF;
00058 }
00059 
00060 //_____________________________________________________________________________
00061 void
00062 emcTowerContentv1S::identify(ostream& os) const
00063 {
00064   os << "emcTowerContentv1S::identify" << endl;
00065 }
00066 
00067 //_____________________________________________________________________________
00068 int
00069 emcTowerContentv1S::isValid(void) const
00070 {
00071   if (fFEM>=0)
00072     {
00073       return 1;
00074     }
00075   else
00076     {
00077       return 0;
00078     }
00079 }
00080 
00081 //_____________________________________________________________________________
00082 bool
00083 emcTowerContentv1S::isZero(void) const
00084 {
00085   return fEnergy <= fEnergyThreshold;
00086 }
00087 
00088 //_____________________________________________________________________________
00089 void
00090 emcTowerContentv1S::print(ostream& out, int /*level*/) const
00091 {
00092   std::ostream::fmtflags oldflags = out.flags();
00093 
00094   int arm,sector,iy,iz;
00095 
00096   int iS,iST;
00097   EmcIndexer::iPXiSiST(TowerID(),iS,iST);
00098   EmcIndexer::iSTxyST(iS,iST,iz,iy);
00099 
00100   EmcIndexer::sectorOnlineToOffline(iS,arm,sector);
00101 
00102   out << "FEM" << setw(3) << dec << FEM()
00103       << " CH" << setw(4) << dec << Channel()
00104       << " TID " << setw(7) << TowerID() 
00105       << " ARM " << setw(2) << arm
00106       << " SEC " << setw(2) << sector
00107       << " Y   " << setw(3) << iy
00108       << " z   " << setw(3) << iz;
00109   if ( hasDC() )
00110     {
00111       out << " ADC " << setw(7) << ADC() 
00112           << " TDC " << setw(6) << TDC();
00113       out.flags(oldflags);
00114     }
00115   if ( hasCalib() ) 
00116     {
00117       out << " E   ";
00118       out.setf(ios::scientific);
00119       out.precision(3);
00120       out << Energy()
00121           << " TOF " << ToF()
00122           << endl;
00123       out.flags(oldflags);
00124     }
00125 
00126   out   << " ERN " << hex << setw(5) << "0x" << ErrorNeighbours()
00127        << " WRN " << hex << setw(5) << "0x" << WarnNeighbours()
00128        << dec;
00129 
00130   out << endl;
00131 
00132   out.flags(oldflags);
00133 }
00134 
00135 //_____________________________________________________________________________
00136 void
00137 emcTowerContentv1S::Reset()
00138 {
00139   fFEM=-1;
00140   fChannel=-1;
00141   fTowerID=-1;
00142  
00143   fHasCalib = false;
00144   fHasDC = false;
00145   
00146   Zero();
00147 }
00148 
00149 //_____________________________________________________________________________
00150 void 
00151 emcTowerContentv1S::SetADCTDC(int adc, int tdc, int, int)
00152 {
00153   fADC=adc;
00154   fTDC=tdc;
00155   fHasDC=true;
00156 }
00157 
00158 //_____________________________________________________________________________
00159 void 
00160 emcTowerContentv1S::SetCalibrated(float energy, float tof)
00161 {
00162   fEnergy = energy;
00163   fTOF=fUncorrectedTOF=tof;
00164   fHasCalib=true;
00165 }
00166 
00167 //_____________________________________________________________________________
00168 void
00169 emcTowerContentv1S::SetToF(float tof)
00170 {
00171   fTOF=tof;
00172 }
00173 
00174 //_____________________________________________________________________________
00175 void
00176 emcTowerContentv1S::SetID(int fem, int channel)
00177 {
00178   fFEM = fem;
00179   fChannel = channel;
00180   fTowerID = EmcIndexer::PXSM144iCH_iPX(fFEM,channel);
00181 }
00182 
00183 //_____________________________________________________________________________
00184 void 
00185 emcTowerContentv1S::SetNeighbours(unsigned int error, unsigned int warning)
00186 {
00187   fErrorNeighbours = error;
00188   fWarnNeighbours = warning;
00189 }
00190 
00191 //_____________________________________________________________________________
00192 void
00193 emcTowerContentv1S::Zero(void)
00194 {
00195   fADC = 0;
00196   fTDC = 0;
00197 
00198   fEnergy = 0.0;
00199   fTOF = 0.0;
00200   fUncorrectedTOF = 0.0;
00201 
00202   fErrorNeighbours = 0;
00203   fWarnNeighbours = 0;
00204 }