Main Page | Modules | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Class Members | File Members | Related Pages

emcTowerContentv1M.C

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

Generated on Sun May 18 03:34:04 2008 for EMCAL Reconstruction by  doxygen 1.3.9.1