/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/RawDataProviderSvc/RawDataProviderSvc-00-03-46/src/TofData.cxx

Go to the documentation of this file.
00001 #include "RawEvent/RawDataUtil.h"
00002 #include "RawDataProviderSvc/TofData.h"
00003 #include "TofQCorrSvc/ITofQCorrSvc.h"
00004 #include "TofQElecSvc/ITofQElecSvc.h"
00005 #include "Identifier/Identifier.h"
00006 #include "Identifier/TofID.h"
00007 #include <iostream>
00008 
00009 extern ITofQCorrSvc* tofQCorrSvc;
00010 extern ITofQElecSvc* tofQElecSvc;
00011 
00012 TofValue::TofValue() {
00013   m_channel = -999;
00014   m_value  = -999.0;
00015   m_times  = -1;
00016   m_number = 0;
00017   m_clock  = -999;
00018   m_used   = false;
00019   return;
00020 }
00021 
00022 
00023 TofValue::~TofValue() {}
00024 
00025 
00026 TofValue& TofValue::operator=(const TofValue& source){
00027   m_channel = source.m_channel;
00028   m_value  = source.m_value;
00029   m_times  = source.m_times;
00030   m_number = source.m_number;
00031   m_clock  = source.m_clock;
00032   m_used   = source.m_used;
00033   return *this;
00034 }
00035 
00036 
00037 void TofValue::timespp() {
00038   m_times = m_times + 1;
00039   return;
00040 }
00041 
00042 
00043 void TofValue::timesmm() {
00044   m_times = m_times - 1;
00045   return;
00046 }
00047 
00048 
00049 void Tdc::setValue( int value ) {
00050   m_clock = ( ( value & 0x7e000 ) >> 13 );
00051   if( value == 0x7fffffff ) { 
00052     m_clock   = 100;
00053     m_channel = 10000;
00054     m_value   = 10000.0;
00055   }
00056   else if( value == -999 ) {
00057     m_channel = -999;
00058     m_value   = -999.0;
00059   }
00060   else { 
00061     m_channel = value;
00062     m_value = RawDataUtil::TofTime( value );
00063   }
00064 
00065   return;
00066 }
00067 
00068 
00069 Adc::Adc() {
00070   m_corr = false;
00071   m_elec = false;
00072   m_mrpc = false;
00073   m_qtc  = -999.0;
00074 }
00075 
00076 
00077 void Adc::setValue( Identifier identify, int value ) {
00078   m_clock = ( ( value & 0x7e000 ) >> 13 );
00079   if( value == 0x7fffffff ) {
00080     m_clock      = 100;
00081     m_channel    = 10000;
00082     m_qtc        = 10000.0;
00083     m_value      = 10000.0;
00084   }
00085   else if( value == -999 ) {
00086     m_channel    = -999;
00087     m_qtc        = -999.0;
00088     m_value      = -999.0;
00089   }
00090   else {
00091 
00092     m_mrpc = TofID::is_mrpc( identify );
00093     if( m_mrpc ) {
00094       m_channel = value;
00095       m_qtc = RawDataUtil::TofTime( m_channel );
00096     }
00097     else {
00098       if( !( TofID::is_scin( identify ) ) ) {
00099         std::cout << "Event/RawDataProviderSvc:: ERROR! ETF(MRPC) data is treated as scintillator data !" << std::endl;
00100       }
00101 
00102       m_channel = ( value  & 0x1fff );
00103       if( ( value & 0x80000 ) != 0 ) {
00104         if( m_corr ) { 
00105           if( m_channel < 4000 ) {
00106             m_channel += 0x2000;
00107           }
00108         }
00109         else {
00110           m_channel += 0x2000;
00111         }
00112       }
00113 
00114       int barrel = TofID::barrel_ec( identify );
00115       int tofid  = TofID::phi_module( identify );
00116       int layer  = TofID::layer( identify );
00117       if( barrel==1 ) {
00118         if( layer==1 ) {
00119           tofid = tofid + 88;
00120         }
00121       }
00122       else if( barrel==2 ) {
00123         tofid = tofid + 48;
00124       }
00125       int east = TofID::end( identify );
00126 
00127       if( m_corr ) {
00128         if( barrel==1 ) {
00129           if( east==0 ) {
00130             m_qtc = tofQCorrSvc->BQRaw1( tofid, m_channel*1.0 );
00131           }
00132           else {
00133             m_qtc = tofQCorrSvc->BQRaw2( tofid, m_channel*1.0 );
00134           }
00135         }
00136         else {
00137           m_qtc = tofQCorrSvc->EQRaw( tofid, m_channel*1.0 );
00138         }
00139       }
00140       else {
00141         m_qtc = m_channel*1.0;
00142       }
00143 
00144       if( m_elec ) {
00145         if( barrel==1 ) {
00146           if( east==0 ) {
00147             m_value = tofQElecSvc->BQTC1( tofid, m_qtc );
00148           }
00149           else {
00150             m_value = tofQElecSvc->BQTC2( tofid, m_qtc );
00151           }
00152         }
00153         else {
00154           m_value = tofQElecSvc->EQTC( tofid, m_qtc );
00155         }
00156       }
00157       else {
00158         m_value = m_qtc*1.0;
00159       }
00160     }
00161 
00162   }
00163   return;
00164 }
00165 
00166 /*
00167 void Adc::calculate( Identifier identify ) {
00168 
00169   if( m_calculated ) return;
00170 
00171   m_mrpc = TofID::is_mrpc( identify );
00172   if( m_mrpc ) {
00173     m_qtc = RawDataUtil::TofTime( m_channel );
00174   }
00175   else {
00176     if( !( TofID::is_scin( identify ) ) ) {
00177       std::cout << "Event/RawDataProviderSvc:: ERROR! ETF(MRPC) data is treated as scintillator data !" << std::endl;
00178     }
00179 
00180     int channel = ( m_channel  & 0x1fff );
00181     if( ( m_channel & 0x80000 ) != 0 ) {
00182       if( m_corr ) { 
00183         if( channel < 4000 ) {
00184           channel += 0x2000;
00185         }
00186       }
00187       else {
00188         channel += 0x2000;
00189       }
00190     }
00191     m_channel = channel;
00192 
00193     int barrel = TofID::barrel_ec( identify );
00194     int tofid  = TofID::phi_module( identify );
00195     int layer  = TofID::layer( identify );
00196     if( barrel==1 ) {
00197       if( layer==1 ) {
00198         tofid = tofid + 88;
00199       }
00200     }
00201     else if( barrel==2 ) {
00202       tofid = tofid + 48;
00203     }
00204     int east   = TofID::end( identify );
00205 
00206     if( m_corr ) {
00207       if( barrel==1 ) {
00208         if( east==0 ) {
00209           m_qtc = tofQCorrSvc->BQRaw1( tofid, m_channel*1.0 );
00210         }
00211         else {
00212           m_qtc = tofQCorrSvc->BQRaw2( tofid, m_channel*1.0 );
00213         }
00214       }
00215       else {
00216         m_qtc = tofQCorrSvc->EQRaw( tofid, m_channel*1.0 );
00217       }
00218     }
00219     else {
00220       m_qtc = m_channel*1.0;
00221     }
00222 
00223     if( m_elec ) {
00224       if( barrel==1 ) {
00225         if( east==0 ) {
00226           m_value = tofQElecSvc->BQTC1( tofid, m_qtc );
00227         }
00228         else {
00229           m_value = tofQElecSvc->BQTC2( tofid, m_qtc );
00230         }
00231       }
00232       else {
00233         m_value = tofQElecSvc->EQTC( tofid, m_qtc );
00234       }
00235     }
00236     else {
00237       m_value = m_qtc*1.0;
00238     }
00239   }
00240 
00241   m_calculated = true;
00242   return;
00243 }
00244 */
00245 
00246 PmtData::PmtData() {
00247   m_iden_value = 0;
00248   m_times      = 0;
00249   m_quality    = 0;
00250   m_adc        = 0;
00251   m_tdc        = 0;
00252 }
00253 
00254 
00255 PmtData::~PmtData() {
00256   PmtData::clear();
00257 }
00258 
00259 
00260 PmtData& PmtData::operator=(const PmtData& source){
00261   m_iden_value = source.m_iden_value;
00262   m_times      = source.m_times;
00263   m_quality    = source.m_quality;
00264   m_adc        = source.m_adc;
00265   m_tdc        = source.m_tdc;
00266   return *this;
00267 }
00268 
00269 
00270 int PmtData::adcChannel() {
00271   int channel = -999;
00272   if( m_adc ) {
00273     channel = m_adc->channel();
00274   }
00275   return channel;
00276 }
00277 
00278 
00279 double PmtData::qtc() {
00280   double value = -999.0;
00281   if( m_adc ) {
00282     value = m_adc->qtc();
00283   }
00284   else {
00285     if( m_tdc ) {
00286       value = 10000.0;
00287     }
00288   }
00289   return value;
00290 }
00291 
00292 
00293 double PmtData::adc() {
00294   double value = -999.0;
00295   if( m_adc ) {
00296 
00297     if( TofID::is_mrpc( TofID::cell_id( m_iden_value ) ) ) {
00298       if( m_tdc ) {
00299         double tleading = m_tdc->value();
00300         if( tleading>0.0 ) {
00301           int qchannel = m_adc->channel();
00302           if( qchannel!=10000 && qchannel!=-999 ) {
00303             double ttrailing = m_adc->qtc();
00304             value = ttrailing - tleading;
00305           }
00306         }
00307       }
00308     }
00309     else {
00310       value = m_adc->value();
00311     }
00312   }
00313   else {
00314     if( m_tdc ) {
00315       value = 10000.0;
00316     }
00317   }
00318   return value;
00319 }
00320 
00321 
00322 int PmtData::qclock() {
00323   int clock = -999;
00324   if( m_adc ) {
00325     clock = m_adc->clock();
00326   }
00327   return clock;
00328 }
00329 
00330 
00331 int PmtData::tdcChannel() {
00332   int channel = -999;
00333   if( m_tdc ) {
00334     channel = m_tdc->channel();
00335   }
00336   return channel;
00337 }
00338 
00339 
00340 double PmtData::tdc() {
00341   double value = -999.;
00342   if( m_tdc ) {
00343     value = m_tdc->value();
00344   }
00345   return value;
00346 }
00347 
00348 
00349 int PmtData::tclock() {
00350   int clock = -999;
00351   if( m_tdc ) {
00352     clock = m_tdc->clock();
00353   }
00354   return clock;
00355 }
00356 
00357 
00358 void PmtData::timespp() {
00359   m_times = m_times + 1;
00360   return;
00361 }
00362 
00363 
00364 void PmtData::timesmm() {
00365   m_times = m_times - 1;
00366   return;
00367 }
00368 
00369 
00370 void PmtData::qtimespp() {
00371   if( m_adc ) {
00372     m_adc->timespp();
00373   }
00374   return;
00375 }
00376 
00377 
00378 void PmtData::qtimesmm() {
00379   if( m_adc ) {
00380     m_adc->timesmm();
00381   }
00382   return;
00383 }
00384 
00385 
00386 void PmtData::ttimespp() {
00387   if( m_tdc ) {
00388     m_tdc->timespp();
00389   }
00390   return;
00391 }
00392 
00393 
00394 void PmtData::ttimesmm() {
00395   if( m_tdc ) {
00396     m_tdc->timesmm();
00397   }
00398   return;
00399 }
00400 
00401 
00402 int PmtData::qtimes() {
00403   int times = -1;
00404   if( m_adc ) {
00405     times = m_adc->times();
00406   }
00407   return times;
00408 }
00409 
00410 
00411 int PmtData::ttimes() {
00412   int times = -1;
00413   if( m_tdc ) {
00414     times = m_tdc->times();
00415   }
00416   return times;
00417 }
00418 
00419 
00420 int PmtData::qnumber() {
00421   int number = 0;
00422   if( m_adc ) {
00423     number = m_adc->number();
00424   }
00425   return number;
00426 }
00427 
00428 
00429 int PmtData::tnumber() {
00430   int number = 0;
00431   if( m_tdc ) {
00432     number = m_tdc->number();
00433   }
00434   return number;
00435 }
00436 
00437 
00438 bool PmtData::qused() {
00439   bool used = false;
00440   if( m_adc ) {
00441     used = m_adc->used();
00442   }
00443   return used;
00444 }
00445 
00446 
00447 bool PmtData::tused() {
00448   bool used = false;
00449   if( m_tdc ) {
00450     used = m_tdc->used();
00451   }
00452   return used;
00453 }
00454 
00455 
00456 bool PmtData::used() {
00457   bool used = false;
00458   if( m_adc ) {
00459     used = ( used || m_adc->used() );
00460   }
00461   if( m_tdc ) {
00462     used = ( used || m_tdc->used() );
00463   }
00464   return used;
00465 }
00466 
00467 
00468 void PmtData::setAdc( Adc* adc ) {
00469   m_adc = adc;
00470   if( adc->channel() != -999 ) {
00471     if( m_adc->times() == -1 ) { m_adc->timespp(); }
00472     m_quality = ( m_quality | 0x2 );
00473   }
00474   return;
00475 }
00476 
00477 
00478 void PmtData::setTdc( Tdc* tdc ) {
00479   m_tdc = tdc;
00480   if( tdc->channel() != -999 ) {
00481     if( m_tdc->times() == -1 ) { m_tdc->timespp(); }
00482     m_quality = ( m_quality | 0x1 );
00483   }
00484   return;
00485 }
00486 
00487 
00488 void PmtData::setUsed() {
00489   if( m_adc ) {
00490     m_adc->setUsed( true );
00491   }
00492   if( m_tdc ) {
00493     m_tdc->setUsed( true );
00494   }
00495   return;
00496 }
00497 
00498 
00499 void PmtData::clear() {
00500   if( m_adc ) {
00501     if( m_adc->times() <= 1 ) {
00502       delete m_adc;
00503       m_adc = 0;
00504     }
00505     else {
00506       m_adc->timesmm();
00507     }
00508   }
00509   if( m_tdc ) {
00510     if( m_tdc->times() <= 1 ) {
00511       delete m_tdc;
00512       m_tdc = 0;
00513     }
00514     else {
00515       m_tdc->timesmm();
00516     }
00517   }
00518   return;
00519 }
00520 
00521 
00522 TofData::TofData() {
00523   m_identify = 0;
00524   m_mrpc     = false;
00525   m_barrel   = false;
00526   m_tofId    = -1;
00527   m_layer    = -1;
00528   m_strip    = -1;
00529   m_tofTrackId = -1;
00530   m_misLable = false;
00531   m_quality  = 0;
00532   m_tmatched = false;
00533   m_forward  = 0;
00534   m_backward = 0;
00535   m_ztdc     = -999;
00536   m_zadc     = -999;
00537   m_zpos     = -999;
00538   m_energy   = 0;
00539 }
00540 
00541 
00542 TofData& TofData::operator=(const TofData& source){
00543   m_identify = source.m_identify;
00544   m_mrpc     = source.m_mrpc;
00545   m_barrel   = source.m_barrel;
00546   m_tofId    = source.m_tofId;
00547   m_layer    = source.m_layer;
00548   m_strip    = source.m_strip;
00549   m_tofTrackId = source.m_tofTrackId;
00550   m_misLable = source.m_misLable;
00551   m_quality  = source.m_quality;
00552   m_tmatched = source.m_tmatched;
00553   m_forward  = source.m_forward;
00554   m_backward = source.m_backward;
00555   m_ztdc     = source.m_ztdc;
00556   m_zadc     = source.m_zadc;
00557   m_zpos     = source.m_zpos;
00558   m_energy   = source.m_energy;
00559   return *this;
00560 }
00561 
00562 
00563 TofData::~TofData() {
00564   TofData::clear();
00565 }
00566 
00567 /*
00568 int TofData::tofId() {
00569   if( !m_mrpc && !m_barrel && m_misLable ) {
00570     if( m_tofId == 90 ) { return 91; }
00571     else if( m_tofId == 91 ) { return 90; }
00572   }
00573   return m_tofId;
00574 }
00575 */
00576 
00577 void TofData::setIdentify( Identifier identify ) {
00578   m_identify = identify.get_value();
00579   m_mrpc = TofID::is_mrpc( identify );
00580   if( !m_mrpc ) {
00581     int barrel_ec = TofID::barrel_ec(identify);
00582     m_layer  = TofID::layer(identify);
00583     m_tofId  = TofID::phi_module(identify);
00584     if( barrel_ec == 0 ) {
00585       m_barrel = false;
00586     }
00587     else if( barrel_ec == 1 ) {
00588       m_barrel = true;
00589       if( m_layer == 1 ) { m_tofId = m_tofId + 88; } 
00590     }
00591     else if( barrel_ec == 2 ) {
00592       m_barrel = false;
00593       m_tofId = m_tofId + 48;
00594     }
00595   }
00596   else {
00597     m_barrel = false;  
00598     int endcap = TofID::endcap(identify);
00599     m_tofId  = TofID::module(identify);
00600     if( endcap==1 ) {
00601       m_tofId = m_tofId + 36;
00602     }
00603     m_strip  = TofID::strip(identify);
00604   }
00605 
00606   return;
00607 }
00608 
00609 
00610 void TofData::data( double& adcEast, double& tdcEast, double& adcWest, double& tdcWest ) {
00611   adcEast = -999.;
00612   tdcEast = -999.;
00613   if( m_forward ) {
00614     adcEast = m_forward->adc();
00615     tdcEast = m_forward->tdc();
00616   }
00617   adcWest = -999.;
00618   tdcWest = -999.;
00619   if( m_backward ) {
00620     adcWest = m_backward->adc();
00621     tdcWest = m_backward->tdc();
00622   }
00623   return;
00624 }
00625 
00626 
00627 void TofData::data(double& adc, double& tdc ) {
00628   adc = -999.;
00629   tdc = -999.;
00630   if( m_forward ) {
00631     adc = m_forward->adc();
00632     tdc = m_forward->tdc();
00633   }
00634   return;
00635 }
00636 
00637 
00638 double TofData::adc1() {
00639   double value = -999.;
00640   if( m_forward ) {
00641     value = m_forward->adc();
00642   }
00643   return value;
00644 }
00645 
00646 
00647 double TofData::tdc1() {
00648   double value = -999.;
00649   if( m_forward ) {
00650     value = m_forward->tdc();
00651   }
00652   return value;
00653 }
00654 
00655 
00656 double TofData::adc2() {
00657   double value = -999.;
00658   if( m_backward ) {
00659     value = m_backward->adc();
00660   }
00661   return value;
00662 }
00663 
00664 
00665 double TofData::tdc2() {
00666   double value = -999.;
00667   if( m_backward ) {
00668     value = m_backward->tdc();
00669   }
00670   return value;
00671 }
00672 
00673 
00674 double TofData::adc() {
00675   double value = -999.;
00676   if( m_forward ) {
00677     value = m_forward->adc();
00678   }
00679   return value;
00680 }
00681 
00682 
00683 double TofData::tdc() {
00684   double value = -999.;
00685   if( m_forward ) {
00686     value = m_forward->tdc();
00687   }
00688   return value;
00689 }
00690 
00691 
00692 double TofData::qtc1() {
00693   double value = -999.;
00694   if( m_forward ) {
00695     value = m_forward->qtc();
00696   }
00697   return value;
00698 }
00699 
00700 
00701 double TofData::qtc2() {
00702   double value = -999.;
00703   if( m_backward ) {
00704     value = m_backward->qtc();
00705   }
00706   return value;
00707 }
00708 
00709 
00710 double TofData::qtc() {
00711   double value = -999.;
00712   if( m_forward ) {
00713     value = m_forward->qtc();
00714   }
00715   return value;
00716 }
00717 
00718 
00719 int TofData::adcChannelEast() {
00720   int channel = -999;
00721   if( m_forward ) {
00722     channel = m_forward->adcChannel();
00723   }
00724   return channel;
00725 }
00726 
00727 
00728 int TofData::tdcChannelEast() {
00729   int channel = -999;
00730   if( m_forward ) {
00731     channel = m_forward->tdcChannel();
00732   }
00733   return channel;
00734 }
00735 
00736 
00737 int TofData::adcChannelWest() {
00738   int channel = -999;
00739   if( m_backward ) {
00740     channel = m_backward->adcChannel();
00741   }
00742   return channel;
00743 }
00744 
00745 
00746 int TofData::tdcChannelWest() {
00747   int channel = -999;
00748   if( m_backward ) {
00749     channel = m_backward->tdcChannel();
00750   }
00751   return channel;
00752 }
00753 
00754 
00755 int TofData::adcChannel() {
00756   int channel = -999;
00757   if( m_forward ) {
00758     channel = m_forward->adcChannel();
00759   }
00760   return channel;
00761 }
00762 
00763 
00764 int TofData::tdcChannel() {
00765   int channel = -999;
00766   if( m_forward ) {
00767     channel = m_forward->tdcChannel();
00768   }
00769   return channel;
00770 }
00771 
00772 
00773 int TofData::qclock1() {
00774   int clock = -999;
00775   if( m_forward ) {
00776     clock = m_forward->qclock();
00777   }
00778   return clock;
00779 }
00780 
00781 
00782 int TofData::tclock1() {
00783   int clock = -999;
00784   if( m_forward ) {
00785     clock = m_forward->tclock();
00786   }
00787   return clock;
00788 }
00789 
00790 
00791 int TofData::qclock2() {
00792   int clock = -999;
00793   if( m_backward ) {
00794     clock = m_backward->qclock();
00795   }
00796   return clock;
00797 }
00798 
00799 
00800 int TofData::tclock2() {
00801   int clock = -999;
00802   if( m_backward ) {
00803     clock = m_backward->tclock();
00804   }
00805   return clock;
00806 }
00807 
00808 
00809 int TofData::qclock() {
00810   int clock = -999;
00811   if( m_forward ) {
00812     clock = m_forward->qclock();
00813   }
00814   return clock;
00815 }
00816 
00817 
00818 int TofData::tclock() {
00819   int clock = -999;
00820   if( m_forward ) {
00821     clock = m_forward->tclock();
00822   }
00823   return clock;
00824 }
00825 
00826 
00827 int TofData::qtimes1() {
00828   int times = -1;
00829   if( m_forward ) {
00830     times = m_forward->qtimes();
00831   }
00832   return times;
00833 }
00834 
00835 
00836 int TofData::ttimes1() {
00837   int times = -1;
00838   if( m_forward ) {
00839     times = m_forward->ttimes();
00840   }
00841   return times;
00842 }
00843 
00844 
00845 int TofData::qtimes2() {
00846   int times = -1;
00847   if( m_backward ) {
00848     times = m_backward->qtimes();
00849   }
00850   return times;
00851 }
00852 
00853 
00854 int TofData::ttimes2() {
00855   int times = -1;
00856   if( m_backward ) {
00857     times = m_backward->ttimes();
00858   }
00859   return times;
00860 }
00861 
00862 
00863 unsigned int TofData::eastTimes() {
00864   int times = 0;
00865   if( m_forward ) {
00866     times = m_forward->times();
00867   }
00868   return times;
00869 }
00870 
00871 
00872 unsigned int TofData::westTimes() {
00873   int times = 0;
00874   if( m_backward ) {
00875     times = m_backward->times();
00876   }
00877   return times;
00878 }
00879 
00880 
00881 int TofData::qnumber1() {
00882   int number = 0;
00883   if( m_forward ) {
00884     number = m_forward->qnumber();
00885   }
00886   return number;
00887 }
00888 
00889 
00890 int TofData::tnumber1() {
00891   int number = 0;
00892   if( m_forward ) {
00893     number = m_forward->tnumber();
00894   }
00895   return number;
00896 }
00897 
00898 
00899 int TofData::qnumber2() {
00900   int number = 0;
00901   if( m_backward ) {
00902     number = m_backward->qnumber();
00903   }
00904   return number;
00905 }
00906 
00907 
00908 int TofData::tnumber2() {
00909   int number = 0;
00910   if( m_backward ) {
00911     number = m_backward->tnumber();
00912   }
00913   return number;
00914 }
00915 
00916 
00917 bool TofData::qused1() {
00918   bool used = false;
00919   if( m_forward ) {
00920     used = ( used || m_forward->qused() );
00921   }
00922   return used;
00923 }
00924 
00925 
00926 bool TofData::tused1() {
00927   bool used = false;
00928   if( m_forward ) {
00929     used = ( used || m_forward->tused() );
00930   }
00931   return used;
00932 }
00933 
00934 
00935 bool TofData::qused2() {
00936   bool used = false;
00937   if( m_backward ) {
00938     used = ( used || m_backward->qused() );
00939   }
00940   return used;
00941 }
00942 
00943 
00944 bool TofData::tused2() {
00945   bool used = false;
00946   if( m_backward ) {
00947     used = ( used || m_backward->tused() );
00948   }
00949   return used;
00950 }
00951 
00952 
00953 bool TofData::used1() {
00954   bool used = false;
00955   if( m_forward ) {
00956     used = ( used || m_forward->used() );
00957   }
00958   return used;
00959 }
00960 
00961 
00962 bool TofData::used2() {
00963   bool used = false;
00964   if( m_backward ) {
00965     used = ( used || m_backward->used() );
00966   }
00967   return used;
00968 }
00969 
00970 
00971 bool TofData::used() {
00972   bool used = false;
00973   if( m_forward ) {
00974     used = ( used || m_forward->used() );
00975   }
00976   if( m_backward ) {
00977     used = ( used || m_backward->used() );
00978   }
00979   return used;
00980 }
00981 
00982 
00983 void TofData::setForward( PmtData* pmt ) {
00984   m_forward = pmt;
00985   unsigned int quality = m_forward->quality();
00986   quality = ( quality & 0x3 );
00987   if( quality != 0 ) {
00988     m_forward->timespp();
00989     if( ( quality & 0x1 ) != 0 ) {
00990       m_forward->ttimespp();
00991     }
00992     if( ( quality & 0x2 ) != 0 ) {
00993       m_forward->qtimespp();
00994     }
00995   }
00996   m_quality = ( m_quality | ( quality << 2 ) );
00997   return;
00998 }
00999 
01000 
01001 void TofData::setBackward( PmtData* pmt ) {
01002   m_backward = pmt;
01003   unsigned int quality = m_backward->quality();
01004   quality = ( quality & 0x3 );
01005   if( quality != 0 ) {
01006     m_backward->timespp();
01007     if( ( quality & 0x1 ) != 0 ) {
01008       m_backward->ttimespp();
01009     }
01010     if( ( quality & 0x2 ) != 0 ) {
01011       m_backward->qtimespp();
01012     }
01013   }
01014   m_quality = ( m_quality | quality );
01015   return;
01016 }
01017 
01018 
01019 void TofData::setUsed() {
01020   if( m_forward ) {
01021     m_forward->setUsed();
01022   }
01023   if( m_backward ) {
01024     m_backward->setUsed();
01025   }
01026   return;
01027 }
01028 
01029 
01030 void TofData::clear() {
01031   if( m_forward ) {
01032     if( m_forward->times() <= 1 ) {
01033       delete m_forward;
01034       m_forward = 0;
01035     }
01036     else {
01037       m_forward->timesmm();
01038     }
01039   }
01040   if( m_backward ) {
01041     if( m_backward->times() <= 1 ) {
01042       delete m_backward;
01043       m_backward = 0;
01044     }
01045     else {
01046       m_backward->timesmm();
01047     }
01048   }
01049   return;
01050 }

Generated on Tue Nov 29 22:58:35 2016 for BOSS_7.0.2 by  doxygen 1.4.7