//*-- Author : R.Schicker
//*-- Modified : M.Sanchez (01.06.2000)
//*-- Modified : V.Pechenov (10.07.2002)

//_HADES_CLASS_DESCRIPTION 
//////////////////////////////////////////
// HMdcHit
//
//	This class represents one hit in one of the MDC
// planes. A hit is defined as a piece of a straight line
// reconstructed by a MDC chamber. It is, therefore, the highest
// level of information an individual chamber can provide.
//
//	The coordinate system used in the MDC is the local
// MDC coordinate system. That is, in the z-midplane. For a
// particle moving outwards in the spectrometer, the z-midplane is
// defined at the entrance into the fourth cathode plane. x and y are
// expressed in mm
//
//	xDir,yDir are the components of the three dimensional
// tangent unit vector to the track in the z-midplane, values equal
// to -1 indicate that the direction has not been calculated
//
//      cov is the 5x5 covariance matrix of the fit.
//
// 	The base class HMdcCellGroup  provides a mechanism to know
//      which cells contributed to a particular hit. This info is retrieved
//      with the following functions of this base class:	
//
// * Int_t getNCells(Int_t layer)
//	Returns the number of cells in layer "layer" which contributed
//	to the hit.
//
// * Int_t getCell(Int_t layer,Int_t idx)
//      For idx=0 returns the cell number of the first fired cell
//      For idx=1 returns the cell number of the second fired cell
//	.... (maximum idx=3)
//
// * Int_t HMdcHit::getSignId(Int_t layer,Int_t idx)
//	Returns signal id (time/distance) in cell designed by
//	idx (same criterium as before).
//
// * Int_t setSignId(Int_t layer,Int_t cell, Int_t t1,t2=0,t3=0,t4=0)
//	Sets the signal ids and base cell number for layer "layer"
//	Input:
//	  layer --> Number of layer to set
//	  cell  --> Number of the first cell fired in this layer
//	  t1 - t4 --> SignalId for cells: "cell"+0, "cell"+1 ... "cell"+4
//	              Possible values are:
//	                0 --> This cell has not fired
//	                1 --> First signal (time/distance) was used
//	                2 --> Second signal (time/distance) was used
//
// * Short_t getTrackFinder()
//      Returns the type of track finder (Dubna, Santiago, ...)
//      For Dubna track finder it retutns 1.
//
//    The meanings of data member "index" depend from type of track finder 
// (Dubna, Santiago, ...)
//
// Dubna track finder:
//   "index" is index of HMdcClusInf object
//   in category catMdcClusInf (see mdctrackD/hmdcclusinf.cc)
//   Function  getClusInfIndex() return this index.
//
//   Number and oder of HMdcClusInf objects in catMdcClusInf 
//   are the very same as number and order of HMdcHit objects in
//   catMdcHit. You can use it in T->Draw(...) function:
//   T-Draw("HMdcHit.fData.y : HMdcClusInf.fData.clusSize", ...)
//
////////////////////////////////////////////////////////////

using namespace std;
#include "hmdchit.h"
#include <iostream> 
#include <iomanip>

ClassImp(HMdcHit)

void HMdcHit::Clear(void) {
  // reset data members to default values
  x=0.;
  y=0.;
  xDir=0.;
  yDir=0.;
  offset=0.;
  chi2=0.;
  flag=0;
  cov.Clear();
  trFinder=-1;
  index=-1;
  clear();
}

void HMdcHit::Streamer(TBuffer &R__b)
{
   // Stream an object of class HMdcHit.

   UInt_t R__s, R__c;
   if (R__b.IsReading()) {
      Version_t R__v = R__b.ReadVersion(&R__s, &R__c); if (R__v) { }
      if(R__v==2) {
        // read new version
        HMdcCellGroup6::Streamer(R__b);
        R__b >> x;
        R__b >> y;
        R__b >> xDir;
        R__b >> yDir;
        R__b >> offset;
        R__b >> chi2;
        R__b >> flag;
        cov.Streamer(R__b);
        R__b >> sector;
        R__b >> module;

        R__b >> trFinder;
        R__b >> index;
        R__b.CheckByteCount(R__s, R__c, HMdcHit::IsA());
      } else if(R__v==1) {
        // read old version
        HMdcCellGroup6::Streamer(R__b);
        R__b >> x;
        R__b >> y;
        R__b >> xDir;
        R__b >> yDir;
        R__b >> offset;
        R__b >> chi2;
        R__b >> flag;
        cov.Streamer(R__b);
        R__b >> sector;
        R__b >> module;
        R__b.CheckByteCount(R__s, R__c, HMdcHit::IsA());
      }
   } else {
      R__c = R__b.WriteVersion(HMdcHit::IsA(), kTRUE);
      HMdcCellGroup6::Streamer(R__b);
      R__b << x;
      R__b << y;
      R__b << xDir;
      R__b << yDir;
      R__b << offset;
      R__b << chi2;
      R__b << flag;
      cov.Streamer(R__b);
      R__b << sector;
      R__b << module;

      R__b << trFinder;
      R__b << index;
      R__b.SetByteCount(R__c, kTRUE);
   }
}

Last change: Sat May 22 13:02:15 2010
Last generated: 2010-05-22 13:02

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.