--- DarthVader/TrackerLevel2/inc/TrkLevel2.h 2006/06/30 09:48:15 1.4 +++ DarthVader/TrackerLevel2/inc/TrkLevel2.h 2007/08/22 07:03:44 1.30 @@ -8,15 +8,33 @@ #include #include #include +#include +#include -#include +#include +#include // z-coordinate of track state-vector reference-plane #define ZINI 23.5 -// upper and lower (mechanical) z-coordinate of the tracker -#define ZTRKUP 22.29 -#define ZTRKDW -22.22 - +// (mechanical) z-coordinate of the tracker planes +#define ZTRK6 -22.22 +#define ZTRK5 -13.31 +#define ZTRK4 -4.41 +#define ZTRK3 4.49 +#define ZTRK2 13.39 +#define ZTRK1 22.29 +// magnet cavity dimensions +#define ZMAGNHIGH 21.83 +#define ZMAGNLOW -21.83 +#define XMAGNHIGH 8.07 +#define XMAGNLOW -8.07 +#define YMAGNHIGH 6.57 +#define YMAGNLOW -6.57 +// (mechanical) x/y-coordinates of magnet cavity +#define XTRKL -8.1 +#define XTRKR 8.1 +#define YTRKL -6.6 +#define YTRKR 6.6 /** * \brief Class to describe, by points, a particle trajectory in the apparatus. @@ -41,12 +59,15 @@ Trajectory(); Trajectory(int n); Trajectory(int n, float* pz); + ~Trajectory(){Delete();}; void Dump(); + void Delete(); + int DoTrack2(float* al); float GetLength(){float l=0; for(int i=0; i maximum number (level1 processing) + * |||| |||| |||| |||| ||________ 6 + * |||| |||| |||| |||| |_________ 7 + * |||| |||| |||| ||||___________ 8 n.clusters > maximum value (level2 processing) + * |||| |||| |||| |||____________ 9 n.couples per plane > maximum values (vector dimention) + * |||| |||| |||| ||_____________ 10 n.doublets > maximum values + * |||| |||| |||| |______________ 11 n.triplets > maximum values + * |||| |||| ||||________________ 12 n.yz-clouds > maximum values + * |||| |||| |||_________________ 13 n.xz-clouds > maximum values + * |||| |||| ||__________________ 14 n.candidate-tracks > maximum values + * |||| |||| |___________________ 15 n.couples per plane > maximum values (for Hough transform) + * |||| ||||_____________________ 16 + * + * + * For all data processed before June 2007 the event status was coded according to + * a different rule: + * + * Status of level1 processing + * 0 -- OK + * 1 -- missing packet + * 2 -- 1 CRC error + * 3 -- 2 on-line software alarm (latch-up flags asserted or n.transmitted-words = 0) + * 4 -- 3 jump in the trigger counter + * 10 -- 4 decode error + * 11 -- 5 n.clusters > maximum number (for level1 processing) + * Status of level2 processing + * 21 -- 0 n.clusters > maximum value (for level2 processing) + * 22 -- 1 n.couples per plane > maximum values (vector dimention) + * 23 -- 2 n.doublets > maximum values + * 24 -- 3 n.triplets > maximum values + * 25 -- 4 n.yz-clouds > maximum values + * 26 -- 5 n.xz-clouds > maximum values + * 27 -- 6 n.candidate-tracks > maximum values + * 28 -- 7 n.couples per plane > maximum values (for Hough transform) + * + * */ class TrkLevel2 : public TObject { private: - + public: - - - Int_t good2; - Int_t crc[12]; + Int_t good[12]; ///< event status + UInt_t VKmask[12]; ///< Viking-chip mask + UInt_t VKflag[12]; ///< Viking-chip flag TClonesArray *Track; ///< fitted tracks TClonesArray *SingletX; ///< x singlets @@ -165,34 +304,58 @@ TrkLevel2(); // TrkLevel2(cTrkLevel2 *); - - int ntrk() {return Track->GetEntries();} ///< number of stored track + ~TrkLevel2(){Delete();}; + + void Clear(); + void Clear(Option_t *option){Clear();}; + void Delete(); + void Set(); + + int ntrk() {return Track->GetEntries();} ///< number of stored track int nclsx(){return SingletX->GetEntries();} ///< number of x singlets int nclsy(){return SingletY->GetEntries();} ///< number of y singlets void Dump(); - void FillCommonVar(cTrkLevel2 *); - void Clear(); + void SetFromLevel2Struct(cTrkLevel2 *, TrkLevel1 *); + void SetFromLevel2Struct(cTrkLevel2 *s2){ SetFromLevel2Struct(s2, NULL); }; + void SetFromLevel2Struct(TrkLevel1 *l1) { SetFromLevel2Struct(&level2event_, l1); }; + void SetFromLevel2Struct() { SetFromLevel2Struct(&level2event_); }; + void GetLevel2Struct(cTrkLevel2 *) const; void LoadField(TString); + float GetBX(float* v){return TrkParams::GetBX(v);};///< Bx (kGauss) + float GetBY(float* v){return TrkParams::GetBY(v);};///< By (kGauss) + float GetBZ(float* v){return TrkParams::GetBZ(v);};///< Bz (kGauss) + Float_t GetZTrk(Int_t); + Float_t GetXTrkLeft(){return XTRKL;}; + Float_t GetXTrkRight(){return XTRKR;}; + Float_t GetYTrkLeft(){return YTRKL;}; + Float_t GetYTrkRight(){return YTRKR;}; + + Bool_t IsMaskedVK(int,int); + Bool_t GetVKMask(int,int); + Bool_t GetVKFlag(int,int); + TrkSinglet *GetSingletX(int); + TrkSinglet *GetSingletY(int); + TrkTrack *GetStoredTrack(int i); Int_t GetSeqNo(Int_t i) {return (((TrkTrack *)Track->At(i))->seqno);}; ///< Returns track sequential number - TClonesArray *GetTracks_Chi2Sorted(); - TClonesArray *GetTracks_NFitSorted(); - TClonesArray *GetTracks(); - -// int GetNTracks(){return this->GetTracks()->GetEntries();} - Int_t GetNTracks(); - TrkTrack* GetTrack(int i); - TrkTrack* GetTrackImage(int i); + TRefArray *GetTracks_NFitSorted(); + TRefArray *GetTracks(){return this->GetTracks_NFitSorted();}; + + Int_t GetNTracks(); + TrkTrack* GetTrack(int i); + TrkTrack* GetTrackImage(int i); + TrkLevel2* GetTrkLevel2(){return this;} TClonesArray* GetTrackArray(){return Track;};///< returns pointer to the track array - ClassDef(TrkLevel2,1); - -}; + void StatusDump(int view); + Bool_t StatusCheck(int view, int flagmask); + ClassDef(TrkLevel2,3); +}; #endif