emcTowerContentv3.C

Go to the documentation of this file.
00001 #include "emcTowerContentv3.h"
00002 #include <iostream>
00003 #include <iomanip>
00004 #include "EmcIndexer.h"
00005 #include "emcDataError.h"
00006 
00007 ClassImp(emcTowerContentv3)
00008 
00009   using namespace std;
00010 
00011 //_____________________________________________________________________________
00012 emcTowerContentv3::emcTowerContentv3() : emcTowerContent()
00013 {
00014   Reset();
00015 }
00016 
00017 //_____________________________________________________________________________
00018 emcTowerContentv3::emcTowerContentv3(const emcTowerContentv3& o)
00019   : emcTowerContent()
00020 {
00021   o.copyTo(*this);
00022 }
00023 
00024 //_____________________________________________________________________________
00025 emcTowerContentv3&
00026 emcTowerContentv3::operator=(const emcTowerContentv3& o)
00027 {
00028   if ( this != &o )
00029     {
00030       o.copyTo(*this);
00031     }
00032   return *this;
00033 }
00034 
00035 //_____________________________________________________________________________
00036 emcTowerContentv3::~emcTowerContentv3()
00037 {
00038 }
00039 
00040 //_____________________________________________________________________________
00041 void
00042 emcTowerContentv3::copyTo(emcTowerContentv3& dest) const
00043 {
00044   dest.fHasCalib=fHasCalib;
00045   dest.fHasDC=fHasDC;
00046   dest.fHasRaw=fHasRaw;
00047   dest.fFEM=fFEM;
00048   dest.fChannel=fChannel;
00049   dest.fDataError=fDataError;
00050   dest.fErrorNeighbours=fErrorNeighbours;
00051   dest.fWarnNeighbours=fWarnNeighbours;
00052   dest.fHGPost=fHGPost;
00053   dest.fHGPre=fHGPre;
00054   dest.fLGPost=fLGPost;
00055   dest.fLGPre=fLGPre;
00056   dest.fTAC=fTAC;
00057   dest.fTDC=fTDC;
00058   dest.fADC=fADC;
00059   dest.fHG=fHG;
00060   dest.fLG=fLG;
00061   dest.fTowerID=fTowerID;
00062   dest.fBeamClock=fBeamClock;
00063   dest.fAMUPre=fAMUPre;
00064   dest.fAMUPost=fAMUPost;
00065   dest.fAMUTAC=fAMUTAC;
00066   dest.fEnergy=fEnergy;
00067   dest.fTOF=fTOF;
00068   dest.fGain=fGain;
00069   dest.fSimFrac=fSimFrac;
00070   dest.fUncorrectedTOF=fUncorrectedTOF;
00071 }
00072 
00073 //_____________________________________________________________________________
00074 void
00075 emcTowerContentv3::identify(ostream& os) const
00076 {
00077   os << "emcTowerContentv3::identify" << endl;
00078 }
00079 
00080 //_____________________________________________________________________________
00081 int
00082 emcTowerContentv3::isValid(void) const
00083 {
00084   if (fFEM>=0)
00085     {
00086       return 1;
00087     }
00088   else
00089     {
00090       return 0;
00091     }
00092 }
00093 
00094 //_____________________________________________________________________________
00095 bool
00096 emcTowerContentv3::isZero(void) const
00097 {
00098  //  if ( fTAC != 4095 ||
00099 //        fHGPost != 4095 ||
00100 //        fLGPost != 4095 ||
00101 //        fHGPre != 4095 ||
00102 //        fLGPre != 4095 ) {
00103 //     return false ;
00104 //   }
00105 
00106   if ( fDataError & emcDataError::CHANNEL_DISABLED() )
00107     {
00108       return true;
00109     }
00110   else
00111     {
00112       return false;
00113     }
00114 }
00115 
00116 //_____________________________________________________________________________
00117 void
00118 emcTowerContentv3::print(ostream& out, int level) const
00119 {
00120   std::ostream::fmtflags oldflags = out.flags();
00121 
00122   int arm,sector,iy,iz;
00123 
00124   int iS,iST;
00125   EmcIndexer::iPXiSiST(TowerID(),iS,iST);
00126   EmcIndexer::iSTxyST(iS,iST,iz,iy);
00127 
00128   EmcIndexer::sectorOnlineToOffline(iS,arm,sector);
00129 
00130   out << "FEM" << setw(3) << dec << FEM()
00131       << " CH" << setw(4) << dec << Channel()
00132       << " TID " << setw(7) << TowerID() 
00133       << " ARM " << setw(2) << arm
00134       << " SEC " << setw(2) << sector
00135       << " Y   " << setw(3) << iy
00136       << " z   " << setw(3) << iz;
00137   if ( hasDC() )
00138     {
00139       out << " ADC " << setw(7) << ADC() 
00140           << " TDC " << setw(6) << TDC();
00141       out.flags(oldflags);
00142     }
00143   if ( hasCalib() ) 
00144     {
00145       out << " E   ";
00146       out.setf(ios::scientific);
00147       out.precision(3);
00148       out << Energy()
00149           << " TOF " << ToF()
00150           << " Gain " << Gain();
00151       out.flags(oldflags);
00152     }
00153 
00154   if ( level > 0 )
00155     {
00156       if ( hasRaw() )
00157         {
00158           out << endl 
00159               << "             "
00160               << " HPre" << setw(6) << HGPre() 
00161               << " HPos" << setw(6) << HGPost() 
00162               << " LPre" << setw(6) << LGPre() 
00163               << " LPos" << setw(6) << LGPost() 
00164               << " TAC " << setw(6) << TAC() 
00165               << " LG" << setw(6) << LG() 
00166               << " HG " << setw(6) << HG() 
00167               << endl
00168               << "             "
00169               << " APre" << setw(7) << AMUPre()
00170               << " APos" << setw(6) << AMUPost()
00171               << " ATAC" << setw(6) << AMUTAC()
00172               << endl
00173               << "             ";
00174           out.flags(oldflags);
00175         }
00176       out  << " DER " << hex << setw(5) << "0x" << DataError();     
00177     }
00178 
00179   out   << " ERN " << hex << setw(5) << "0x" << ErrorNeighbours()
00180        << " WRN " << hex << setw(5) << "0x" << WarnNeighbours()
00181        << dec;
00182 
00183   out << endl;
00184 
00185   out.flags(oldflags);
00186 }
00187 
00188 //_____________________________________________________________________________
00189 void
00190 emcTowerContentv3::Reset()
00191 {
00192   fFEM=-1;
00193   fChannel=-1;
00194   fTowerID=-1;
00195  
00196   fAMUPre = 0;
00197   fAMUPost = 0;
00198   fAMUTAC = 0;
00199 
00200   fHasCalib = false;
00201   fHasDC = false;
00202   fHasRaw = false;
00203   
00204   fGain=0;
00205 
00206   Zero();
00207 }
00208 
00209 //_____________________________________________________________________________
00210 void 
00211 emcTowerContentv3::SetADCTDC(int adc, int tdc, int hg, int lg)
00212 {
00213   fADC=adc;
00214   fTDC=tdc;
00215   fHG=hg;
00216   fLG=lg;
00217   fHasDC=true;
00218 }
00219 
00220 //_____________________________________________________________________________
00221 void 
00222 emcTowerContentv3::SetCalibrated(float energy, float tof)
00223 {
00224   fEnergy = energy;
00225   fTOF=fUncorrectedTOF=tof;
00226   fHasCalib=true;
00227 }
00228 
00229 //_____________________________________________________________________________
00230 void
00231 emcTowerContentv3::SetToF(float tof)
00232 {
00233   fTOF=tof;
00234 }
00235 
00236 //_____________________________________________________________________________
00237 void 
00238 emcTowerContentv3::SetDataError(int dataerror)
00239 {
00240   fDataError = dataerror;
00241 }
00242 
00243 //_____________________________________________________________________________
00244 void
00245 emcTowerContentv3::SetGain(float gain)
00246 {
00247   fGain = gain;
00248 }
00249 
00250 //_____________________________________________________________________________
00251 void
00252 emcTowerContentv3::SetID(int fem, int channel)
00253 {
00254   fFEM = fem;
00255   fChannel = channel;
00256   fTowerID = EmcIndexer::PXSM144iCH_iPX(fFEM,channel);
00257 }
00258 
00259 //_____________________________________________________________________________
00260 void 
00261 emcTowerContentv3::SetNeighbours(unsigned int error, unsigned int warning)
00262 {
00263   fErrorNeighbours = error;
00264   fWarnNeighbours = warning;
00265 }
00266 
00267 //_____________________________________________________________________________
00268 void 
00269 emcTowerContentv3::SetRaw(int hgpost, int hgpre, int lgpost, int lgpre,
00270                           int tac,
00271                           int amupre, int amupost, int amutac, int beamclock)
00272 {
00273   fHGPost = hgpost;
00274   fHGPre = hgpre;
00275   fLGPost = lgpost;
00276   fLGPre = lgpre;
00277   fTAC = tac;
00278   fAMUPre = amupre;
00279   fAMUPost = amupost;
00280   fAMUTAC = amutac;
00281   fBeamClock = beamclock;
00282   fHasRaw=true;
00283 }
00284 
00285 //_____________________________________________________________________________
00286 void
00287 emcTowerContentv3::SetSimFrac(float simfrac)
00288 {
00289   fSimFrac = simfrac;
00290 }
00291 
00292 //_____________________________________________________________________________
00293 void
00294 emcTowerContentv3::Zero(void)
00295 {
00296   fHGPost = 4095;
00297   fHGPre = 4095;
00298   fLGPost = 4095;
00299   fLGPre = 4095;
00300   fTAC = 4095;
00301 
00302   fHG = 0;
00303   fLG = 0;
00304 
00305   fADC = 0;
00306   fTDC = 0;
00307 
00308   fEnergy = 0.0;
00309   fTOF = 0.0;
00310   fUncorrectedTOF = 0.0;
00311   fGain = 0.0;
00312 
00313   fDataError = 0;
00314   fErrorNeighbours = 0;
00315   fWarnNeighbours = 0;
00316 
00317   fSimFrac = 0;
00318 }