#include "hparticleevtinfo.h"
#include "TBuffer.h"
ClassImp(HParticleEvtInfo)
  
HParticleEvtInfo::HParticleEvtInfo(void)
{
   
   clearMembers();
}
void HParticleEvtInfo::clearMembers(void)
{
   
   for (Int_t s = 0; s < MAXSECTOR; ++s)
   {
      aRichMult[s]         = 0;
      aRichCorrMult[s]     = 0;
      aRichClusMult[s]     = 0;
      aTofMult[s]          = 0;
      aRpcMult[s]          = 0;
      aRpcMultHit[s]       = 0;
      aTofMultCut[s]          = 0;
      aRpcMultCut[s]          = 0;
      aRpcMultHitCut[s]       = 0;
      aShowerMult[s]       = 0;
      aParticleCandMult[s] = 0;
      aSelectedParticleCandMult[s] = 0;
      aPrimaryParticleCandMult [s] = 0;
      fMeanMultSec    [s] = 0;
      fMeanMIPSMultSec[s] = 0;
      fMeanLEPMultSec [s] = 0;
      fSigmaMultSec    [s] = 0;
      fSigmaMIPSMultSec[s] = 0;
      fSigmaLEPMultSec [s] = 0;
   for (Int_t m = 0; m < 4; ++m)
   {
       for (Int_t l = 0; l < 6; ++l)
       {
         aMdcWires      [s][m][l]=0;
         aMdcWiresUnused[s][m][l]=0;
         aMdcWiresRaw   [s][m][l]=0;
       }
       aMdcFlashWires   [s][m]=0;
       aMdcDeltaElWires [s][m]=0;
   }
      for (Int_t io = 0; io < MAXIOSEG; ++io)
      {
	 aMdcClusMult[s][io]        = 0;
	 aMdcSegFittedMult[s][io]   = 0;
	 aMdcSegUnfittedMult[s][io] = 0;
      }
   }
   nFWallMult   = 0;
   fFWallVector = 0.0;    
   fRPlanePhi   = 0.0;
   fwallPhiA = 0.;
   fwallPhiB = 0.;
   fwallPhiAB= 0.;
   fwallNA   = 0.;
   fwallNB   = 0.;
   fEventSelector = 0;
   fMeanMult      = 0;                                    
   fMeanMIPSMult  = 0;
   fMeanLEPMult   = 0;
   fSigmaMult      = 0;                                    
   fSigmaMIPSMult  = 0;
   fSigmaLEPMult   = 0;
}
void HParticleEvtInfo::Streamer(TBuffer &R__b)
{
   
   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
      TObject::Streamer(R__b);
      R__b.ReadStaticArray((int*)aRichMult);
      R__b.ReadStaticArray((int*)aRichCorrMult);
      R__b.ReadStaticArray((int*)aRichClusMult);
      R__b.ReadStaticArray((int*)aMdcClusMult);
      R__b.ReadStaticArray((int*)aMdcSegFittedMult);
      R__b.ReadStaticArray((int*)aMdcSegUnfittedMult);
      R__b.ReadStaticArray((int*)aTofMult);
      R__b.ReadStaticArray((int*)aShowerMult);
      R__b.ReadStaticArray((int*)aRpcMult);
      if(R__v > 1){
	  R__b.ReadStaticArray((int*)aRpcMultHit);
      } else {
	  for (Int_t s = 0; s < MAXSECTOR; ++s) aRpcMultHit[s] = 0;
      }
      if(R__v > 2){
	  R__b.ReadStaticArray((int*)aTofMultCut);
	  R__b.ReadStaticArray((int*)aRpcMultCut);
	  R__b.ReadStaticArray((int*)aRpcMultHitCut);
      } else {
	  for (Int_t s = 0; s < MAXSECTOR; ++s) {
	      aTofMultCut[s] = 0;
	      aRpcMultCut[s] = 0;
	      aRpcMultHitCut[s] = 0;
	  }
      }
      R__b.ReadStaticArray((int*)aParticleCandMult);
      R__b.ReadStaticArray((int*)aSelectedParticleCandMult);
      if(R__v > 4){
	  R__b.ReadStaticArray((int*)aPrimaryParticleCandMult);
      }
      if(R__v > 3){
	  R__b.ReadStaticArray((short*)aMdcWires);
	  R__b.ReadStaticArray((short*)aMdcWiresUnused);
      } else {
	  for (Int_t s = 0; s < MAXSECTOR; ++s){
	      for (Int_t m = 0; m < 4; ++m){
		  for (Int_t l = 0; l < 6; ++l){
                          aMdcWires      [s][m][l]=0;
                          aMdcWiresUnused[s][m][l]=0;
		  }
	      }
	  }
      }
      if(R__v > 4){
	  R__b.ReadStaticArray((short*)aMdcWiresRaw);
      } else {
	  for (Int_t s = 0; s < MAXSECTOR; ++s){
	      for (Int_t m = 0; m < 4; ++m){
		  for (Int_t l = 0; l < 6; ++l){
		      aMdcWiresRaw[s][m][l]=0;
		  }
	      }
	  }
      }
      
      if(R__v > 6){
	  R__b.ReadStaticArray((short*)aMdcFlashWires);
	  R__b.ReadStaticArray((short*)aMdcDeltaElWires);
      } else {
	  for (Int_t s = 0; s < MAXSECTOR; ++s){
	      for (Int_t m = 0; m < 4; ++m){
		  aMdcFlashWires[s][m]=0;
                  aMdcDeltaElWires[s][m]=0;
	      }
	  }
      }
      R__b >> nFWallMult;
      R__b >> fFWallVector;
      R__b >> fRPlanePhi;
      if(R__v > 2){
	  R__b >> fwallPhiA ;
	  R__b >> fwallPhiB ;
	  R__b >> fwallPhiAB;
	  R__b >> fwallNA   ;
	  R__b >> fwallNB   ;
      } else {
	  fwallPhiA = 0.;
	  fwallPhiB = 0.;
	  fwallPhiAB= 0.;
	  fwallNA   = 0.;
	  fwallNB   = 0.;
      }
      if(R__v > 4){
	  R__b >> fEventSelector;
      } else {
	  fEventSelector = 0 ;
      }
      if(R__v > 4){
	  R__b >> fMeanMult ;
	  R__b >> fMeanMIPSMult ;
	  R__b >> fMeanLEPMult ;
	  R__b.ReadStaticArray((float*)fMeanMultSec);
	  R__b.ReadStaticArray((float*)fMeanMIPSMultSec);
	  R__b.ReadStaticArray((float*)fMeanLEPMultSec);
      } else {
	  fMeanMult     = 0;
          fMeanMIPSMult = 0;
          fMeanLEPMult  = 0;
	  for (Int_t s = 0; s < MAXSECTOR; ++s){
	      fMeanMultSec    [s] = 0;
	      fMeanMIPSMultSec[s] = 0;
	      fMeanLEPMultSec [s] = 0;
	  }
      }
      if(R__v > 5){
	  R__b >> fSigmaMult ;
	  R__b >> fSigmaMIPSMult ;
	  R__b >> fSigmaLEPMult ;
	  R__b.ReadStaticArray((float*)fSigmaMultSec);
	  R__b.ReadStaticArray((float*)fSigmaMIPSMultSec);
	  R__b.ReadStaticArray((float*)fSigmaLEPMultSec);
      } else {
	  fSigmaMult     = 0;
          fSigmaMIPSMult = 0;
          fSigmaLEPMult  = 0;
	  for (Int_t s = 0; s < MAXSECTOR; ++s){
	      fSigmaMultSec    [s] = 0;
	      fSigmaMIPSMultSec[s] = 0;
	      fSigmaLEPMultSec [s] = 0;
	  }
      }
      R__b.CheckByteCount(R__s, R__c, HParticleEvtInfo::IsA());
   } else {
      R__c = R__b.WriteVersion(HParticleEvtInfo::IsA(), kTRUE);
      TObject::Streamer(R__b);
      R__b.WriteArray(aRichMult, 6);
      R__b.WriteArray(aRichCorrMult, 6);
      R__b.WriteArray(aRichClusMult, 6);
      R__b.WriteArray((int*)aMdcClusMult, 12);
      R__b.WriteArray((int*)aMdcSegFittedMult, 12);
      R__b.WriteArray((int*)aMdcSegUnfittedMult, 12);
      R__b.WriteArray(aTofMult, 6);
      R__b.WriteArray(aShowerMult, 6);
      R__b.WriteArray(aRpcMult, 6);
      R__b.WriteArray(aRpcMultHit, 6);
      R__b.WriteArray(aTofMultCut, 6);
      R__b.WriteArray(aRpcMultCut, 6);
      R__b.WriteArray(aRpcMultHitCut, 6);
      R__b.WriteArray(aParticleCandMult, 6);
      R__b.WriteArray(aSelectedParticleCandMult, 6);
      R__b.WriteArray(aPrimaryParticleCandMult , 6);
      R__b.WriteArray((short*)aMdcWires, 6*4*6);
      R__b.WriteArray((short*)aMdcWiresUnused, 6*4*6);
      R__b.WriteArray((short*)aMdcWiresRaw   , 6*4*6);
      R__b.WriteArray((short*)aMdcFlashWires  , 6*4);;
      R__b.WriteArray((short*)aMdcDeltaElWires, 6*4);
      R__b << nFWallMult;
      R__b << fFWallVector;
      R__b << fRPlanePhi;
      R__b << fwallPhiA ;
      R__b << fwallPhiB ;
      R__b << fwallPhiAB;
      R__b << fwallNA   ;
      R__b << fwallNB   ;
      R__b << fEventSelector;
      R__b << fMeanMult ;
      R__b << fMeanMIPSMult ;
      R__b << fMeanLEPMult ;
      R__b.WriteArray((float*)fMeanMultSec    ,6);
      R__b.WriteArray((float*)fMeanMIPSMultSec,6);
      R__b.WriteArray((float*)fMeanLEPMultSec ,6);
      R__b << fSigmaMult ;
      R__b << fSigmaMIPSMult ;
      R__b << fSigmaLEPMult ;
      R__b.WriteArray((float*)fSigmaMultSec    ,6);
      R__b.WriteArray((float*)fSigmaMIPSMultSec,6);
      R__b.WriteArray((float*)fSigmaLEPMultSec ,6);
      R__b.SetByteCount(R__c, kTRUE);
   }
}