ROOT logo
#ifndef HPIONTRACKERTRACKF_H
#define HPIONTRACKERTRACKF_H

#include "hreconstructor.h"
#include "hpiontrackermompar.h"
#include "hpiontrackermomrunpar.h"

class HCategory;
class HIterator;
class HPionTrackerTrackFPar;
class HPionTrackerBeamPar;
class HPionTrackerMomPar;
class HPionTrackerMomRunPar;


#include <fstream>
// TODO: FLAG GOOD MOMENTUM
struct track
{
	track() : fP(0), fTheta(0), fPhi(0), fMatch(0),
    fX1(0), fY1(0), fX2(0), fY2(0), fXh(0), fYh(0), fPhi0(0), fTheta0(0), fY0(0), fDist(0)  {}

	Float_t fP;
	Float_t fTheta;
	Float_t fPhi;
	Float_t fMatch;
	Float_t fX1;
	Float_t fY1;
	Float_t fX2;
	Float_t fY2;
	Float_t fXh;
	Float_t fYh;
	Float_t fPhi0;
	Float_t fTheta0;
	Float_t fY0;
        Float_t fDist;
};


class HPionTrackerTrackF : public HReconstructor
{

protected:
	HCategory * pHitCat;			// pointer to the cal data
	HCategory * pTrackCat;			// pointer to the hit data
	HIterator * iter;			// iterator on cal data.
	HLocation lochit;			// location of the cal object
	HLocation loc;				// location for new hit object
	HPionTrackerTrackFPar * pTrackfpar;	// pointer to track finder parameters
        HPionTrackerBeamPar   * pTrackBeampar;	// pointer to beam parameters
	HPionTrackerMomPar * pTrackerMompar;	// pointer to momentum selection & correction parameters
        HPionTrackerMomRunPar   * pTrackerMomRunpar;	// pointer to momentum selection & correction  parameters per run
	HPionTrackerMomRunPars correction; // momentum selection & corrections per run
	Double_t corrs[2]; // momentum correction: max transmission & mean offset

	// momentum selection: sort function for minimal distance
	static bool sortfunction(const track tr1, const track tr2)
	{
	  return (tr1.fDist < tr2.fDist);
	}
	
        Int_t idet1 ;
	Int_t idet2 ;

	Int_t id_det1;  // beam element
        Int_t id_det2;  // beam element
        Int_t id_outQ9; // beam element
        Int_t id_targ;  // beam element
        //------------------------------------------------------
        // local vars
	Double_t T12[2];    //!
	Double_t T14[2];    //!
	Double_t T16[2];    //!
	Double_t T126[2];   //!
	Double_t T146[2];   //!
	Double_t T166[2];   //!
	Double_t T32[2];    //!
	Double_t T33[2];    //!
	Double_t T34[2];    //!
	Double_t T36[2];    //!
	Double_t T336[2];   //!
	Double_t T346[2];   //!
	Double_t T366[2];   //!

	Double_t T12_t;     //!
	Double_t T14_t;     //!
	Double_t T16_t;     //!
	Double_t T126_t;    //!
	Double_t T146_t;    //!
	Double_t T166_t;    //!
	Double_t T32_t;     //!
	Double_t T33_t;     //!
	Double_t T34_t;     //!
	Double_t T36_t;     //!
	Double_t T326_t;    //!
	Double_t T336_t;    //!
	Double_t T346_t;    //!
	Double_t T366_t;    //!

	Double_t T21_t;     //!
	Double_t T22_t;     //!
	Double_t T23_t;     //!
	Double_t T24_t;     //!
	Double_t T26_t;     //!
	Double_t T226_t;    //!
	Double_t T246_t;    //!
	Double_t T266_t;    //!
	Double_t T41_t;     //!
	Double_t T42_t;     //!
	Double_t T43_t;     //!
	Double_t T44_t;     //!
	Double_t T46_t;     //!
	Double_t T426_t;    //!
	Double_t T436_t;    //!
	Double_t T446_t;    //!
	Double_t T466_t;    //!
	Int_t nev ;         //! EVENT COUNTER FOR FILE
	std::ifstream inputpos;  //!
	std::ifstream scanpos;  //!
//------------------------------------------------------

        void   initVars();
	void   insertTrack(const track & tr);
        Bool_t momrec (Float_t x1, Float_t y1, Float_t x2, Float_t y2, Float_t momref, track & tr);
public:
	HPionTrackerTrackF (void);
	HPionTrackerTrackF (const Text_t * name, const Text_t * title, Bool_t skip = kFALSE);
	~HPionTrackerTrackF (void);
	void setBeamElements(Int_t id1,Int_t id2,Int_t outQ9,Int_t idtarg) { id_det1=id1; id_det2=id2; id_outQ9=outQ9; id_targ=idtarg;  }

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


	ClassDef (HPionTrackerTrackF, 0) // Hit finder cal->hit for PionTracker
};

#endif /* !HPIONTRACKERTRACKF_H */
 hpiontrackertrackf.h:1
 hpiontrackertrackf.h:2
 hpiontrackertrackf.h:3
 hpiontrackertrackf.h:4
 hpiontrackertrackf.h:5
 hpiontrackertrackf.h:6
 hpiontrackertrackf.h:7
 hpiontrackertrackf.h:8
 hpiontrackertrackf.h:9
 hpiontrackertrackf.h:10
 hpiontrackertrackf.h:11
 hpiontrackertrackf.h:12
 hpiontrackertrackf.h:13
 hpiontrackertrackf.h:14
 hpiontrackertrackf.h:15
 hpiontrackertrackf.h:16
 hpiontrackertrackf.h:17
 hpiontrackertrackf.h:18
 hpiontrackertrackf.h:19
 hpiontrackertrackf.h:20
 hpiontrackertrackf.h:21
 hpiontrackertrackf.h:22
 hpiontrackertrackf.h:23
 hpiontrackertrackf.h:24
 hpiontrackertrackf.h:25
 hpiontrackertrackf.h:26
 hpiontrackertrackf.h:27
 hpiontrackertrackf.h:28
 hpiontrackertrackf.h:29
 hpiontrackertrackf.h:30
 hpiontrackertrackf.h:31
 hpiontrackertrackf.h:32
 hpiontrackertrackf.h:33
 hpiontrackertrackf.h:34
 hpiontrackertrackf.h:35
 hpiontrackertrackf.h:36
 hpiontrackertrackf.h:37
 hpiontrackertrackf.h:38
 hpiontrackertrackf.h:39
 hpiontrackertrackf.h:40
 hpiontrackertrackf.h:41
 hpiontrackertrackf.h:42
 hpiontrackertrackf.h:43
 hpiontrackertrackf.h:44
 hpiontrackertrackf.h:45
 hpiontrackertrackf.h:46
 hpiontrackertrackf.h:47
 hpiontrackertrackf.h:48
 hpiontrackertrackf.h:49
 hpiontrackertrackf.h:50
 hpiontrackertrackf.h:51
 hpiontrackertrackf.h:52
 hpiontrackertrackf.h:53
 hpiontrackertrackf.h:54
 hpiontrackertrackf.h:55
 hpiontrackertrackf.h:56
 hpiontrackertrackf.h:57
 hpiontrackertrackf.h:58
 hpiontrackertrackf.h:59
 hpiontrackertrackf.h:60
 hpiontrackertrackf.h:61
 hpiontrackertrackf.h:62
 hpiontrackertrackf.h:63
 hpiontrackertrackf.h:64
 hpiontrackertrackf.h:65
 hpiontrackertrackf.h:66
 hpiontrackertrackf.h:67
 hpiontrackertrackf.h:68
 hpiontrackertrackf.h:69
 hpiontrackertrackf.h:70
 hpiontrackertrackf.h:71
 hpiontrackertrackf.h:72
 hpiontrackertrackf.h:73
 hpiontrackertrackf.h:74
 hpiontrackertrackf.h:75
 hpiontrackertrackf.h:76
 hpiontrackertrackf.h:77
 hpiontrackertrackf.h:78
 hpiontrackertrackf.h:79
 hpiontrackertrackf.h:80
 hpiontrackertrackf.h:81
 hpiontrackertrackf.h:82
 hpiontrackertrackf.h:83
 hpiontrackertrackf.h:84
 hpiontrackertrackf.h:85
 hpiontrackertrackf.h:86
 hpiontrackertrackf.h:87
 hpiontrackertrackf.h:88
 hpiontrackertrackf.h:89
 hpiontrackertrackf.h:90
 hpiontrackertrackf.h:91
 hpiontrackertrackf.h:92
 hpiontrackertrackf.h:93
 hpiontrackertrackf.h:94
 hpiontrackertrackf.h:95
 hpiontrackertrackf.h:96
 hpiontrackertrackf.h:97
 hpiontrackertrackf.h:98
 hpiontrackertrackf.h:99
 hpiontrackertrackf.h:100
 hpiontrackertrackf.h:101
 hpiontrackertrackf.h:102
 hpiontrackertrackf.h:103
 hpiontrackertrackf.h:104
 hpiontrackertrackf.h:105
 hpiontrackertrackf.h:106
 hpiontrackertrackf.h:107
 hpiontrackertrackf.h:108
 hpiontrackertrackf.h:109
 hpiontrackertrackf.h:110
 hpiontrackertrackf.h:111
 hpiontrackertrackf.h:112
 hpiontrackertrackf.h:113
 hpiontrackertrackf.h:114
 hpiontrackertrackf.h:115
 hpiontrackertrackf.h:116
 hpiontrackertrackf.h:117
 hpiontrackertrackf.h:118
 hpiontrackertrackf.h:119
 hpiontrackertrackf.h:120
 hpiontrackertrackf.h:121
 hpiontrackertrackf.h:122
 hpiontrackertrackf.h:123
 hpiontrackertrackf.h:124
 hpiontrackertrackf.h:125
 hpiontrackertrackf.h:126
 hpiontrackertrackf.h:127
 hpiontrackertrackf.h:128
 hpiontrackertrackf.h:129
 hpiontrackertrackf.h:130
 hpiontrackertrackf.h:131
 hpiontrackertrackf.h:132
 hpiontrackertrackf.h:133
 hpiontrackertrackf.h:134
 hpiontrackertrackf.h:135
 hpiontrackertrackf.h:136
 hpiontrackertrackf.h:137
 hpiontrackertrackf.h:138
 hpiontrackertrackf.h:139
 hpiontrackertrackf.h:140