ROOT logo
#ifndef HMDCCAL2PAR_H
#define HMDCCAL2PAR_H

#include "TObject.h"
#include "TObjArray.h"
#include "hparset.h"
#include "TRandom.h"
#include "TString.h"
class HMdcDetector;
class HMdcCal2ParSim;

class HMdcCal2ParAngle : public TObject {
friend class HMdcCal2ParSim;
friend class HMdcCal2ParSecSim;
friend class HMdcCal2ParModSim;
friend class HMdcCal2Par;
friend class HMdcCal2ParSec;
friend class HMdcCal2ParMod;

protected:
    Float_t distance[100];
    Float_t distanceErr[100];
public:
    HMdcCal2ParAngle() { clear(); }
    ~HMdcCal2ParAngle() {;}
    void setDistance(Int_t line,Int_t i, Float_t t){distance[line*10+i]=t;}
    void setDistanceError(Int_t line,Int_t i, Float_t t){distanceErr[line*10+i]=t;}

    Float_t getDistance(Int_t line,Int_t i){return distance[line*10+i];}
    Float_t getDistanceError(Int_t line,Int_t i){return distanceErr[line*10+i];}

    void fillDistance(Int_t p0,
	      Float_t p1,Float_t p2,
	      Float_t p3,Float_t p4,
	      Float_t p5,Float_t p6,
	      Float_t p7,Float_t p8,
	      Float_t p9,Float_t p10)
    {
	setDistance(p0,0,p1);
	setDistance(p0,1,p2);
	setDistance(p0,2,p3);
	setDistance(p0,3,p4);
	setDistance(p0,4,p5);
	setDistance(p0,5,p6);
	setDistance(p0,6,p7);
	setDistance(p0,7,p8);
	setDistance(p0,8,p9);
	setDistance(p0,9,p10);

    }
   void fillDistanceError(Int_t p0,
	      Float_t p1,Float_t p2,
	      Float_t p3,Float_t p4,
	      Float_t p5,Float_t p6,
	      Float_t p7,Float_t p8,
	      Float_t p9,Float_t p10)
    {
	setDistanceError(p0,0,p1);
	setDistanceError(p0,1,p2);
	setDistanceError(p0,2,p3);
	setDistanceError(p0,3,p4);
	setDistanceError(p0,4,p5);
	setDistanceError(p0,5,p6);
	setDistanceError(p0,6,p7);
	setDistanceError(p0,7,p8);
	setDistanceError(p0,8,p9);
	setDistanceError(p0,9,p10);

    }
    void fillDistance(HMdcCal2ParAngle&);
    void fillDistanceError(HMdcCal2ParAngle&);

    void clear() {
	for(Int_t i=0;i<100;i++)
	{
	    distance[i]=0.;
            distanceErr[i]=0.;
	}
    }
    ClassDef(HMdcCal2ParAngle,1) // Angle level of the MDC calibration parameters
};

class HMdcCal2ParMod : public TObject {
protected:
    TObjArray *array;   // array of pointers of type HMdcCal2ParAngle
public:
    HMdcCal2ParMod(Int_t sec = 0, Int_t mod = 0 , Int_t angle = 18);
    ~HMdcCal2ParMod();
    HMdcCal2ParAngle& operator[](Int_t i) {
      return *static_cast<HMdcCal2ParAngle*>((*array)[i]);
    }
    Int_t getSize() {return array->GetEntries();}
    ClassDef(HMdcCal2ParMod,1) // Module level of the MDC calibration parameters
};


class HMdcCal2ParSec : public TObject {
protected:
    TObjArray* array;   // array of pointers of type HMdcCal2ParMod
public:
    HMdcCal2ParSec(Int_t sec = 0, Int_t mod = 4);
    ~HMdcCal2ParSec();
    HMdcCal2ParMod& operator[](Int_t i) {
      return *static_cast<HMdcCal2ParMod*>((*array)[i]);
    }
    Int_t getSize() {return array->GetEntries();}
    ClassDef(HMdcCal2ParSec,1) // Sector level of the MDC calibration parameters
};


class HMdcCal2Par : public HParSet {
friend class HMdcCal2ParSim;
protected:
    TObjArray* array;      // array of pointers of type HMdcCal2ParSec
    HMdcDetector *fMdc;
    TString comment;
    Int_t sector;
    Int_t module;
    Int_t linecounter;
    Int_t linecounterwrite;
    Int_t type;
    HMdcCal2ParSim* cal2parsim;
    Float_t myslopeOutside;
public:
    HMdcCal2Par(const Char_t* name="MdcCal2Par",
                   const Char_t* title=
                       "cal2 calibration parameters for Mdc [time->distance]",
                   const Char_t* context="MdcCal2ParSimProduction",
                   Int_t n=6);
    ~HMdcCal2Par();
    HMdcCal2ParSec& operator[](Int_t i) {
        return *static_cast<HMdcCal2ParSec*>((*array)[i]);
    }
    void setContainerComment(TString mycomment){comment=mycomment;}
    TString getContainerComment(){return comment;}
    void printContainerComment(){printf("%s\n",comment.Data());}
    Int_t getSize() {return array->GetEntries();}
    Int_t getNumberOfLines() {return 20;}
    Bool_t init(HParIo*);
    Int_t write(HParIo*);
    void putAsciiHeader(TString&);
    Bool_t writeline(Char_t*, Int_t, Int_t, Int_t);
    Double_t calcDistance(Int_t ,Int_t ,Double_t,Double_t);
    Double_t calcDistanceErr(Int_t ,Int_t ,Double_t,Double_t);
    void calcDistance(Int_t ,Int_t ,Double_t,Double_t,Double_t*,Double_t*);
    void plot(Int_t,Int_t);
    void plot2D(Int_t,Int_t,Int_t);
    void clear();
    void printParam();
    ClassDef(HMdcCal2Par,1) // Container for the MDC calibration parameters
};

#endif  /*!HMDCCAL2PAR_H*/

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