//
// Written by Emiliano Mocchiutti
//

struct Tracklev1 {
    Bool_t good1;
    Int_t nev1;
    Int_t whic_calib1;
    Int_t swcode1;
    //    Bool_t crc1[12];
    Int_t crc1[12];
    Int_t pkt_type1;
    Int_t pkt_num1;
    Int_t obt1;
    Bool_t cpu_crc1;
    Int_t nclstr1;
    Int_t view[500];
    Int_t ladder[500];
    Int_t maxs[500];
    Int_t mult[500];
    Float_t dedx[500];
    Int_t indstart[500];
    Int_t indmax[500];
    Int_t totcllength;
    Float_t clsignal[8500]; 
    Float_t cnev[24][12];
};     

struct CTracklev1 {
    Bool_t good1;
    Int_t nev1;
    Int_t whic_calib1;
    Int_t swcode1;
    //    Bool_t crc1[12];
    Int_t crc1[12];
    Int_t pkt_type1;
    Int_t pkt_num1;
    Int_t obt1;
    Bool_t cpu_crc1;
    Int_t nclstr1;
    Int_t view[500];
    Int_t ladder[500];
    Int_t maxs[500];
    Int_t mult[500];
    Float_t dedx[500];
    Int_t indstart[500];
    Int_t indmax[500];
    Int_t totcllength;
    Float_t clsignal[8500]; 
    Float_t cnev[12][24];
};     

struct Tracklev2 {
    Bool_t good2;
    Int_t nev2;
    Int_t which_calib;
    Int_t swcode;
    //    Bool_t crc[12];
    Int_t crc[12];
    Int_t pkt_type;
    Int_t pkt_num;
    Int_t obt;
    Int_t cpu_crc;
    Int_t           ntrk;
    Int_t           image[50];
    Float_t         xm[50][6];
    Float_t         ym[50][6];
    Float_t         zm[50][6];
    Float_t         resx[50][6];   
    Float_t         resy[50][6];   
    Float_t         al[50][5];
    Float_t         coval[50][5][5];
    Float_t         chi2[50]; 
    Int_t           xgood[50][6];
    Int_t           ygood[50][6];
    Float_t         xv[50][6];   
    Float_t         yv[50][6];   
    Float_t         zv[50][6];   
    Float_t         axv[50][6];  
    Float_t         ayv[50][6];  
    Float_t         dedx_x[50][6];  
    Float_t         dedx_y[50][6];  
    Float_t         bdl[50];  
    Int_t           nclsx;
    Int_t           planex[500];
    Float_t         xs[500][2];
    Float_t         sgnlxs[500];
    Int_t           nclsy;
    Int_t           planey[500];
    Float_t         ys[500][2];
    Float_t         sgnlys[500];
};

struct CTracklev2 {
    Bool_t good2;
    Int_t nev2;
    Int_t which_calib;
    Int_t swcode;
    //    Bool_t crc[12];
    Int_t crc[12];
    Int_t pkt_type;
    Int_t pkt_num;
    Int_t obt;
    Int_t cpu_crc;
    Int_t           ntrk;
    Int_t           image[50];
    Float_t         xm[6][50];
    Float_t         ym[6][50];
    Float_t         zm[6][50];
    Float_t         resx[6][50];   
    Float_t         resy[6][50];   
    Float_t         al[5][50];
    Float_t         coval[5][5][50];
    Float_t         chi2[50]; 
    Int_t           xgood[6][50];
    Int_t           ygood[6][50];
    Float_t         xv[6][50];   
    Float_t         yv[6][50];   
    Float_t         zv[6][50];   
    Float_t         axv[6][50];  
    Float_t         ayv[6][50];  
    Float_t         dedx_x[6][50];  
    Float_t         dedx_y[6][50];  
    Float_t         bdl[50];  
    Int_t           nclsx;
    Int_t           planex[500];
    Float_t         xs[2][500];
    Float_t         sgnlxs[500];
    Int_t           nclsy;
    Int_t           planey[500];
    Float_t         ys[2][500];
    Float_t         sgnlys[500];
};


