/home/bes3soft/bes3soft/Boss/7.0.2/dist/7.0.2/Event/DstEvent/DstEvent-00-02-51/src/TofHitStatus.cxx

Go to the documentation of this file.
00001 #include "DstEvent/TofHitStatus.h"
00002 #include "DstEvent/DstTofTrack.h"
00003 #include <assert.h>
00004 
00005 TofHitStatus::TofHitStatus() {
00006   m_status   = 0;
00007   m_raw      = false;
00008   m_readout  = false;
00009   m_counter  = false;
00010   m_cluster  = false;
00011   m_barrel   = false;
00012   m_east     = false;
00013   m_layer    = 0;
00014   m_overflow = false;
00015   m_multihit = false;
00016   m_ncounter = 0;
00017   m_neast    = 0;
00018   m_nwest    = 0;
00019   m_mrpc     = false;
00020 }
00021 
00022 
00023 void TofHitStatus::init() {
00024   m_status   = 0;
00025   m_raw      = false;
00026   m_readout  = false;
00027   m_counter  = false;
00028   m_cluster  = false;
00029   m_barrel   = false;
00030   m_east     = false;
00031   m_layer    = 0;
00032   m_overflow = false;
00033   m_multihit = false;
00034   m_ncounter = 0;
00035   m_neast    = 0;
00036   m_nwest    = 0;
00037   m_mrpc     = false;
00038 }
00039 
00040 
00041 TofHitStatus& 
00042 TofHitStatus::operator=(const DstTofTrack& source){
00043   m_status = source.status();
00044   m_raw      = ((m_status & Raw_Mask) >> Raw_Index ) ? true : false;
00045   m_readout  = ((m_status & Readout_Mask) >> Readout_Index ) ? true : false;
00046   m_counter  = ((m_status & Counter_Mask) >> Counter_Index ) ? true : false;
00047   m_cluster  = ((m_status & Cluster_Mask) >> Cluster_Index ) ? true : false;
00048   m_barrel   = ((m_status & Barrel_Mask) >> Barrel_Index ) ? true : false;
00049   m_east     = ((m_status & East_Mask) >> East_Index ) ? true : false;
00050   m_layer    = (m_status  & Layer_Mask) >> Layer_Index;
00051   m_overflow = ((m_status & Overflow_Mask) >> Overflow_Index ) ? true : false;
00052   m_multihit = ((m_status & Multihit_Mask) >> Multihit_Index ) ? true : false;
00053   m_ncounter = (m_status >> Ncounter_Index ) & N_Mask;
00054   m_neast    = (m_status >> Neast_Index ) & N_Mask;
00055   m_nwest    = (m_status >> Nwest_Index ) & N_Mask;
00056   m_mrpc     = ((m_status & MRPC_Mask) >> MRPC_Index ) ? true : false;
00057 
00058   return *this;
00059 }
00060 
00061 
00062 TofHitStatus& 
00063 TofHitStatus::operator=( const TofHitStatus& source ){
00064   m_status = source.m_status;
00065   return *this;
00066 }
00067 
00068 
00069 bool TofHitStatus::is_raw( unsigned int status ) {
00070   return ((status & Raw_Mask) >> Raw_Index ) ? true : false;
00071 }
00072 
00073 
00074 bool TofHitStatus::is_readout( unsigned int status ) {
00075   return ((status & Readout_Mask) >> Readout_Index ) ? true : false;
00076 }
00077 
00078 
00079 bool TofHitStatus::is_counter( unsigned int status ) {
00080   return ((status & Counter_Mask) >> Counter_Index ) ? true : false;
00081 }
00082 
00083 
00084 bool TofHitStatus::is_cluster( unsigned int status ) {
00085   return ((status & Cluster_Mask) >> Cluster_Index ) ? true : false;
00086 }
00087 
00088 
00089 bool TofHitStatus::is_barrel( unsigned int status ) {
00090   return ((status & Barrel_Mask) >> Barrel_Index ) ? true : false;
00091 }
00092 
00093 
00094 bool TofHitStatus::is_east( unsigned int status ) {
00095   return ((status & East_Mask) >> East_Index ) ? true : false;
00096 }
00097 
00098 
00099 unsigned int TofHitStatus::layer( unsigned int status ) {
00100   return (status  & Layer_Mask) >> Layer_Index;
00101 }
00102 
00103 
00104 bool TofHitStatus::is_overflow( unsigned int status ) {
00105   return ((status & Overflow_Mask) >> Overflow_Index ) ? true : false;
00106 }
00107 
00108 
00109 bool TofHitStatus::is_multihit( unsigned int status ) {
00110   return ((status & Multihit_Mask) >> Multihit_Index ) ? true : false;
00111 }
00112 
00113 
00114 unsigned int TofHitStatus::ncounter( unsigned int status ) {
00115   return (status >> Ncounter_Index ) & N_Mask;
00116 }
00117 
00118 
00119 unsigned int  TofHitStatus::neast( unsigned int status ) {
00120   return (status >> Neast_Index ) & N_Mask;
00121 }
00122 
00123 
00124 unsigned int  TofHitStatus::nwest( unsigned int status ) {
00125   return (status >> Nwest_Index ) & N_Mask;
00126 }
00127 
00128 
00129 bool TofHitStatus::is_mrpc( unsigned int status ) {
00130   return ((status & MRPC_Mask) >> MRPC_Index ) ? true : false;
00131 }
00132 
00133 
00134 void TofHitStatus::setStatus( unsigned int status ) {
00135   m_status   = status;
00136   m_raw      = ((m_status & Raw_Mask) >> Raw_Index ) ? true : false;
00137   m_readout  = ((m_status & Readout_Mask) >> Readout_Index ) ? true : false;
00138   m_counter  = ((m_status & Counter_Mask) >> Counter_Index ) ? true : false;
00139   m_cluster  = ((m_status & Cluster_Mask) >> Cluster_Index ) ? true : false;
00140   m_barrel   = ((m_status & Barrel_Mask) >> Barrel_Index ) ? true : false;
00141   m_east     = ((m_status & East_Mask) >> East_Index ) ? true : false;
00142   m_layer    = (m_status  & Layer_Mask) >> Layer_Index;
00143   m_overflow = ((m_status & Overflow_Mask) >> Overflow_Index ) ? true : false;
00144   m_multihit = ((m_status & Multihit_Mask) >> Multihit_Index ) ? true : false;
00145   m_ncounter = (m_status >> Ncounter_Index ) & N_Mask;
00146   m_neast    = (m_status >> Neast_Index ) & N_Mask;
00147   m_nwest    = (m_status >> Nwest_Index ) & N_Mask;
00148   m_mrpc     = ((m_status & MRPC_Mask) >> MRPC_Index ) ? true : false;
00149 }
00150 
00151 
00152 void TofHitStatus::setRaw( bool raw ) {
00153   m_raw = raw;
00154   if( raw ) { m_status |= Raw_Mask; }
00155   else { m_status &= (~Raw_Mask); }
00156 }
00157 
00158 
00159 void TofHitStatus::setReadout( bool readout ) {
00160   m_readout = readout;
00161   if( readout ) { m_status |= Readout_Mask; }
00162   else { m_status &= (~Readout_Mask); }
00163 }
00164 
00165 
00166 void TofHitStatus::setCounter( bool counter ) {
00167   m_counter = counter;
00168   if( counter ) { m_status |= Counter_Mask; }
00169   else { m_status &= (~Counter_Mask); }
00170 }
00171 
00172 
00173 void TofHitStatus::setCluster( bool cluster ) {
00174   m_cluster = cluster;
00175   if( cluster ) { m_status |= Cluster_Mask; }
00176   else { m_status &= (~Cluster_Mask); }
00177 }
00178 
00179 
00180 void TofHitStatus::setBarrel( bool barrel ) {
00181   m_barrel = barrel;
00182   if( barrel ) { m_status |= Barrel_Mask; }
00183   else { m_status &= (~Barrel_Mask); }
00184 }
00185 
00186 
00187 void TofHitStatus::setEast( bool east ) {
00188   m_east = east;
00189   if( east ) { m_status |= East_Mask; }
00190   else { m_status &= (~East_Mask); }
00191 }
00192 
00193 
00194 void TofHitStatus::setLayer( unsigned int layer ) {
00195   assert(layer<=3);
00196   m_layer = layer;
00197   m_status |= (layer << Layer_Index);
00198 }
00199 
00200 
00201 void TofHitStatus::setOverflow( bool overflow ) {
00202   m_overflow = overflow;
00203   if( overflow ) { m_status |= Overflow_Mask; }
00204   else { m_status &= (~Overflow_Mask); }
00205 }
00206 
00207 
00208 void TofHitStatus::setMultihit( bool multihit ) {
00209   m_multihit = multihit;
00210   if( multihit ) { m_status |= Multihit_Mask; }
00211   else { m_status &= (~Multihit_Mask); }
00212 }
00213 
00214 
00215 void TofHitStatus::setNCounter( unsigned int ncounter ) {
00216   if( m_barrel ) assert(ncounter<=176);
00217   else assert(ncounter<=96);
00218   m_ncounter = ncounter;
00219   m_status |= (ncounter << Ncounter_Index);
00220 }
00221 
00222 
00223 void TofHitStatus::setNEast( unsigned int neast ) {
00224   if( m_barrel ) assert(neast<=176);
00225   else assert(neast<=96);
00226   m_neast = neast;
00227   m_status |= (neast << Neast_Index);
00228 }
00229 
00230 
00231 void TofHitStatus::setNWest( unsigned int nwest ) {
00232   if( m_barrel ) assert(nwest<=176);
00233   else assert(nwest<=96);
00234   m_nwest = nwest;
00235   m_status |= (nwest << Nwest_Index);
00236 }
00237 
00238 
00239 void TofHitStatus::setMRPC( bool mrpc ) {
00240   m_mrpc = mrpc;
00241   if( mrpc ) { m_status |= MRPC_Mask; }
00242   else { m_status &= (~MRPC_Mask); }
00243 }
00244 
00245 
00246 void TofHitStatus::setBarrelCluster( unsigned int layer ) {
00247   TofHitStatus::setRaw( false );
00248   TofHitStatus::setCluster( true );
00249   TofHitStatus::setBarrel( true );
00250   TofHitStatus::setOverflow( false );
00251   TofHitStatus::setMultihit( false );
00252 
00253   if( layer == 3 ) {
00254     TofHitStatus::setReadout( false );
00255     TofHitStatus::setCounter( false );
00256     TofHitStatus::setEast( false );
00257     TofHitStatus::setLayer( layer );
00258     TofHitStatus::setNCounter( 2 );
00259     TofHitStatus::setNEast( 2 );
00260     TofHitStatus::setNWest( 2 );
00261   }
00262   else if( layer == 1 || layer == 2 ) {
00263     TofHitStatus::setReadout( false );
00264     TofHitStatus::setCounter( true );
00265     TofHitStatus::setEast( false );
00266     TofHitStatus::setLayer( layer );
00267     TofHitStatus::setNCounter( 1 );
00268     TofHitStatus::setNEast( 1 );
00269     TofHitStatus::setNWest( 1 );
00270   }
00271   else if( layer == 11 || layer == 12 || layer == 21 || layer == 22 ) {
00272     TofHitStatus::setReadout( true );
00273     TofHitStatus::setCounter( true );
00274     TofHitStatus::setNCounter( 0 );
00275     if( layer%10 == 1 ) {
00276       TofHitStatus::setEast( true );
00277       TofHitStatus::setNEast( 1 );
00278       TofHitStatus::setNWest( 0 );
00279     }
00280     else {
00281       TofHitStatus::setEast( false );
00282       TofHitStatus::setNEast( 0 );
00283       TofHitStatus::setNWest( 1 );
00284     }
00285     if( static_cast<int>(layer/10) == 1 ) {
00286       TofHitStatus::setLayer( 1 );
00287     }
00288     else {
00289       TofHitStatus::setLayer( 2 );
00290     }
00291   }
00292   else{
00293     cout << "TofRec  TofHitStatus::setBarrelCounter  layer = " << layer << endl;
00294     return;
00295   }
00296   TofHitStatus::setMRPC( false );
00297 
00298   return;
00299 }
00300 
00301 
00302 void TofHitStatus::setBarrelCounter( unsigned int layer ) {
00303 
00304   TofHitStatus::setRaw( false );
00305   TofHitStatus::setCounter( true );
00306   TofHitStatus::setCluster( false );
00307   TofHitStatus::setBarrel( true );
00308   TofHitStatus::setOverflow( false );
00309   TofHitStatus::setMultihit( false );
00310 
00311   if( layer == 1 || layer == 2 ) {
00312     TofHitStatus::setReadout( false );
00313     TofHitStatus::setEast( false );
00314     TofHitStatus::setLayer( layer );
00315     TofHitStatus::setNCounter( 1 );
00316     TofHitStatus::setNEast( 1 );
00317     TofHitStatus::setNWest( 1 );
00318   }
00319   if( layer == 11 || layer == 12 || layer == 21 || layer == 22 ) {
00320     TofHitStatus::setReadout( true );
00321     TofHitStatus::setNCounter( 0 );
00322     if( layer%10 == 1 ) {
00323       TofHitStatus::setEast( true );
00324       TofHitStatus::setNEast( 1 );
00325       TofHitStatus::setNWest( 0 );
00326     }
00327     else {
00328       TofHitStatus::setEast( false );
00329       TofHitStatus::setNEast( 0 );
00330       TofHitStatus::setNWest( 1 );
00331     }
00332     if( static_cast<int>(layer/10) == 1 ) {
00333       TofHitStatus::setLayer( 1 );
00334     }
00335     else {
00336       TofHitStatus::setLayer( 2 );
00337     }
00338   }
00339   TofHitStatus::setMRPC( false );
00340 
00341   return;
00342 }
00343 
00344 
00345 void TofHitStatus::setBarrelReadout( unsigned int layer, bool east ) {
00346   TofHitStatus::setRaw( false );
00347   TofHitStatus::setReadout( true );
00348   TofHitStatus::setCounter( false );
00349   TofHitStatus::setCluster( false );
00350   TofHitStatus::setBarrel( true );
00351   TofHitStatus::setEast( east );
00352   TofHitStatus::setLayer( layer );
00353   TofHitStatus::setOverflow( false );
00354   TofHitStatus::setMultihit( false );
00355   TofHitStatus::setNCounter( 0 );
00356   if( east ){
00357     TofHitStatus::setNEast( 1 );
00358     TofHitStatus::setNWest( 0 );
00359   }
00360   else{
00361     TofHitStatus::setNEast( 0 );
00362     TofHitStatus::setNWest( 1 );
00363   }
00364   TofHitStatus::setMRPC( false );
00365   return;
00366 }
00367 
00368 
00369 void TofHitStatus::setBarrelRaw( unsigned int layer, bool east ) {
00370   TofHitStatus::setRaw( true );
00371   TofHitStatus::setReadout( true );
00372   TofHitStatus::setCounter( false );
00373   TofHitStatus::setCluster( false );
00374   TofHitStatus::setBarrel( true );
00375   TofHitStatus::setEast( east );
00376   TofHitStatus::setLayer( layer );
00377   TofHitStatus::setOverflow( false );
00378   TofHitStatus::setMultihit( false );
00379   TofHitStatus::setNCounter( 0 );
00380   if( east ){
00381     TofHitStatus::setNEast( 1 );
00382     TofHitStatus::setNWest( 0 );
00383   }
00384   else{
00385     TofHitStatus::setNEast( 0 );
00386     TofHitStatus::setNWest( 1 );
00387   }
00388   TofHitStatus::setMRPC( false );
00389   return;
00390 }
00391 
00392 
00393 void TofHitStatus::setEndcapCluster( bool east ) {
00394   TofHitStatus::setRaw( false );
00395   TofHitStatus::setReadout( true );
00396   TofHitStatus::setCounter( true );
00397   TofHitStatus::setCluster( true );
00398   TofHitStatus::setBarrel( false );
00399   TofHitStatus::setEast( east );
00400   TofHitStatus::setLayer( 1 );
00401   TofHitStatus::setOverflow( false );
00402   TofHitStatus::setMultihit( false );
00403   TofHitStatus::setNCounter( 1 );
00404   TofHitStatus::setNEast( 1 );
00405   TofHitStatus::setNWest( 0 );
00406   TofHitStatus::setMRPC( false );
00407   return;
00408 }
00409 
00410 
00411 void TofHitStatus::setEndcapRaw( bool east ) {
00412   TofHitStatus::setRaw( true );
00413   TofHitStatus::setReadout( true );
00414   TofHitStatus::setCounter( false );
00415   TofHitStatus::setCluster( false );
00416   TofHitStatus::setBarrel( false );
00417   TofHitStatus::setEast( east );
00418   TofHitStatus::setLayer( 1 );
00419   TofHitStatus::setOverflow( false );
00420   TofHitStatus::setMultihit( false );
00421   TofHitStatus::setNCounter( 1 );
00422   TofHitStatus::setNEast( 1 );
00423   TofHitStatus::setNWest( 0 );
00424   TofHitStatus::setMRPC( false );
00425   return;
00426 }
00427 
00428 
00429 void TofHitStatus::setMRPCReadout( bool east ) {
00430   TofHitStatus::setRaw( false );
00431   TofHitStatus::setReadout( true );
00432   TofHitStatus::setCounter( false );
00433   TofHitStatus::setCluster( false );
00434   TofHitStatus::setBarrel( false );
00435   TofHitStatus::setEast( east );
00436   TofHitStatus::setLayer( 1 );
00437   TofHitStatus::setOverflow( false );
00438   TofHitStatus::setMultihit( false );
00439   TofHitStatus::setNCounter( 0 );
00440   if( east ) {
00441     TofHitStatus::setNEast( 1 );
00442     TofHitStatus::setNWest( 0 );
00443   }
00444   else {
00445     TofHitStatus::setNEast( 0 );
00446     TofHitStatus::setNWest( 1 );
00447   }
00448   TofHitStatus::setMRPC( true );
00449   return;
00450 }
00451 
00452 
00453 void TofHitStatus::setMRPCCluster( bool cluster, bool east ) {
00454   TofHitStatus::setRaw( false );
00455   if( cluster ) {
00456     TofHitStatus::setReadout( false );
00457   }
00458   else {
00459     TofHitStatus::setReadout( true );
00460   }
00461   TofHitStatus::setCounter( true );
00462   TofHitStatus::setCluster( true );
00463   TofHitStatus::setBarrel( false );
00464   TofHitStatus::setEast( east );
00465   TofHitStatus::setLayer( 1 );
00466   TofHitStatus::setOverflow( false );
00467   TofHitStatus::setMultihit( false );
00468   if( cluster ) {
00469     TofHitStatus::setNCounter( 1 );
00470     TofHitStatus::setNEast( 1 );
00471     TofHitStatus::setNWest( 1 );
00472   }
00473   else {
00474     TofHitStatus::setNCounter( 1 );
00475     if( east ) {
00476       TofHitStatus::setNEast( 1 );
00477       TofHitStatus::setNWest( 0 );
00478     }
00479     else {
00480       TofHitStatus::setNEast( 0 );
00481       TofHitStatus::setNWest( 1 );
00482     }
00483   }
00484   TofHitStatus::setMRPC( true );
00485   return;
00486 }
00487 
00488 
00489 void TofHitStatus::setNoHit() {
00490   TofHitStatus::setRaw( true );
00491   TofHitStatus::setReadout( false );
00492   TofHitStatus::setCounter( false );
00493   TofHitStatus::setCluster( false );
00494   TofHitStatus::setBarrel( false );
00495   TofHitStatus::setEast( false );
00496   TofHitStatus::setLayer( 0 );
00497   TofHitStatus::setOverflow( false );
00498   TofHitStatus::setMultihit( false );
00499   TofHitStatus::setNCounter( 0 );
00500   TofHitStatus::setNEast( 0 );
00501   TofHitStatus::setNWest( 0 );
00502   TofHitStatus::setMRPC( false );
00503   return;
00504 }

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