# ifndef HMDCHITF_H
# define HMDCHITF_H

# include "TFile.h"
# include "TH1.h"
# include "TMatrix.h"
# include "hlocation.h"
# include "hreconstructor.h"


class HCategory;
class HMatrixCategory;
class HMdcCal2;
class HMdcCalLinkList;
class HMdcModuleGeometry;
class HMdcTargetGeometry;
class HMdcCalHit;
class HMdcCal3;
class HMdcHitAux;
class HMdcHitFPar;


class HMdcHitF : public HReconstructor {

protected:
  HMdcHitFPar* parContainer;    // !parameter container
  HMdcTargetGeometry* targetGeo;       // !target geometry
  HCategory* mdcCal;                // !calibrated data to be fitted
  HMdcModuleGeometry* geo;                // !geometry data
  HCategory* fCalCat;               // ! category of cal2 data
  HCategory* mdcSegments;           // !segments produced after fitting
  HCategory* fHitCat;               // ! category of reconstructed hits
  HMdcCalLinkList** fList;          //! lists of cal hits (internal use only)

  HLocation fLoc;                  // !location of the reconstructor
  Int_t fEventId;                  

  Bool_t target;                  // ! target = kFALSE==>rec. without target 
  Bool_t slopeCorrection;         // ! slopeCorrection = kTRUE==>rec. with makeSlopeCorrection

  virtual void buildList(void);            // builds the Double_t linked list
  Float_t calculatePosPartner(HMdcCal3* hit);
  Int_t calculateCell(Int_t sector, Int_t module, Int_t layer, Float_t coordinate);

  void fit(HMdcHitAux* seg);
  void makeSlopeCorrection();

  Int_t find(Int_t listPlanes[6], Int_t nWantedHits, Int_t segPos);
  void markHits(Int_t first, Int_t last);
  Bool_t checkCommon(HMdcHitAux* segment);   // check if segment shares   
                                              // maxNumberCommonHits or more
                                              // with the other segments in
                                              // the segments collection
  Bool_t firstCheck(TMatrix param);
  Bool_t checkFit(HMdcHitAux* segment);

  void fillHitCat(void);                     
  virtual const Text_t *getCalHitClassName(void) { return "HMdcCal3"; }

public:
  HMdcHitF(void);
  HMdcHitF(const Text_t* name,const Text_t* title);
  HMdcHitF(HMatrixCategory* data, HMdcModuleGeometry* mdcGeo, HCategory* seg);
  HMdcHitF(HCategory* data, HMdcModuleGeometry* mdcGeo, HCategory *seg);

  ~HMdcHitF(void);

  void setNoTarget(void){target = kFALSE;}  
  void setSlopeCorrection(void){slopeCorrection = kTRUE;}
  void setLoc(HLocation& location);
  void setParContainer(void);
  HMdcHitFPar* getParContainer(void){return parContainer;}

  Int_t execute(void);
  Bool_t init(void);
  Bool_t finalize(void){return kTRUE;}

  void printSegments(ofstream &file);
  void printCalHitCat(ofstream &file);

  ClassDef(HMdcHitF,1)
};



# endif            /* !HMDCHITF_H */
 





 

Last change: Sat May 22 13:02:20 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.