ROOT logo
#ifndef HMDCCUTSTAT_H
#define HMDCCUTSTAT_H

#include "hparset.h"
#include <stdio.h>
#include "TObjArray.h"

class HMdcDetector;

class HMdcCutStatMod : public TObject {
protected:
  Int_t Calibrater1cutT1;   // Cut 1:  cutin time1
  Int_t Calibrater1cutT2;   // Cut 2:  cut in time2
  Int_t Calibrater1cutT12;  // Cut 3:  cut in t2-t1
  Int_t Calibrater1cutWire; // Cut 4:  cut wires<4
  Int_t Calibrater1cutT1T12;// Cut 5:  cut t1 and t12
  Int_t Calibrater1cutBump; // Cut 6:  bump cut t1 + tot
  Int_t Calibrater1All;     // Cut 7:  all
  Int_t Calibrater1cutAll;  // Cut 8:  cut all

public:
  HMdcCutStatMod() { clear(); }
  HMdcCutStatMod(HMdcCutStatMod &tc):TObject(tc) {fill(tc);}
  ~HMdcCutStatMod() {}
  void setCal1StatCutT1() {
       Calibrater1cutT1++;
  }
  void setCal1StatCutT2() {
       Calibrater1cutT2++;
  }
  void setCal1StatCutT12() {
       Calibrater1cutT12++;
  }
  void setCal1StatCutWire() {
       Calibrater1cutWire++;
  }
  void setCal1StatCutT1T12() {
       Calibrater1cutT1T12++;
  }
  void setCal1StatCutBump() {
       Calibrater1cutBump++;
  }
  void setCal1StatCutAll() {
       Calibrater1cutAll++;
  }
  void setCal1StatAll() {
       Calibrater1All++;
  }
  Int_t getCal1StatCutT1(void)   { return Calibrater1cutT1; }
  Int_t getCal1StatCutT2(void)   { return Calibrater1cutT2; }
  Int_t getCal1StatCutT12(void)  { return Calibrater1cutT12; }
  Int_t getCal1StatCutWire(void) { return Calibrater1cutWire; }
  Int_t getCal1StatCutT1T12(void){ return Calibrater1cutT1T12; }
  Int_t getCal1StatCutBump(void) { return Calibrater1cutBump; }
  Int_t getCal1StatCutAll(void)  { return Calibrater1cutAll; }
  Int_t getCal1StatAll(void)     { return Calibrater1All; }
  
  void fill(HMdcCutStatMod &tc) {
    Calibrater1cutT1   = tc.Calibrater1cutT1;
    Calibrater1cutT2   = tc.Calibrater1cutT2;
    Calibrater1cutT12  = tc.Calibrater1cutT12;
    Calibrater1cutWire = tc.Calibrater1cutWire;
    Calibrater1cutT1T12= tc.Calibrater1cutT1T12;
    Calibrater1cutBump = tc.Calibrater1cutBump;
    Calibrater1cutAll  = tc.Calibrater1cutAll;
    Calibrater1All     = tc.Calibrater1All;
  }
  void fill(Int_t cT1,Int_t cT2,Int_t cT12,Int_t cWire,Int_t cT1T12,Int_t cBump,Int_t cAll,Int_t all) {
      Calibrater1cutT1   = cT1;
      Calibrater1cutT2   = cT12;
      Calibrater1cutT12  = cT12;
      Calibrater1cutWire = cWire;
      Calibrater1cutT1T12= cT1T12;
      Calibrater1cutT1T12= cBump;
      Calibrater1cutAll  = cAll;
      Calibrater1All     = all;
  }
  void clear(void) {
    fill(0,0,0,0,0,0,0,0);
  }
  void print(void) {
    printf("%10i %10i %10i %10i %10i %10i %10i %10i \n",
	   Calibrater1cutT1,Calibrater1cutT2,Calibrater1cutT12,Calibrater1cutWire,
	   Calibrater1cutT1T12,Calibrater1cutBump,Calibrater1cutAll,Calibrater1All);
  }
  void printRatio(void) {

      if(Calibrater1All!=0)
      {
	  printf("%5i%% %5i%% %5i%% %5i%% %5i%% %5i%% %5i%% %10i cts \n",
		 100*Calibrater1cutT1/Calibrater1All   ,100*Calibrater1cutT2/Calibrater1All,
		 100*Calibrater1cutT12/Calibrater1All  ,100*Calibrater1cutWire/Calibrater1All,
		 100*Calibrater1cutT1T12/Calibrater1All,100*Calibrater1cutBump/Calibrater1All,
		 100*Calibrater1cutAll/Calibrater1All  ,Calibrater1All);
      }
      else
      {
       	  printf("%5i%% %5i%% %5i%% %5i%% %5i%% %5i%% %5i%% %10i cts \n",0,0,0,0,0,0,0,0);
      }
  }

  ClassDef(HMdcCutStatMod,2)
};

class HMdcCutStatSec : public TObject {
 protected:
  TObjArray fMod;
 public:
  HMdcCutStatSec(Int_t mods=4) : fMod(mods) {
    for (Int_t i=0; i<mods; i++) fMod.AddAt(new HMdcCutStatMod,i);
  }
  ~HMdcCutStatSec(void) {}
  HMdcCutStatMod& operator[](Int_t i) {
    return *( static_cast<HMdcCutStatMod*>(fMod[i]) );
  }
  Int_t getSize() {return fMod.GetEntries();}
  ClassDef(HMdcCutStatSec,1)
};

class HMdcCutStat : public HParSet {
protected:
  TObjArray fSecs; // Sectors containins modules containing cuts
  void setNameTitle();
  HMdcDetector *fMdc; 
  static HMdcCutStat* fMdcCutStat;
  HMdcCutStat(const Char_t* name="MdcCutStat",
              const Char_t* title="Statistic  on Cuts on time1, time2 & time2-time1 and wires<4",
              const Char_t* context="",
              Int_t secs=6,Int_t mods=4);
  ~HMdcCutStat();
  void  setCal1StatCutT1(Int_t sec, Int_t mod) {
      (*this)[sec][mod].setCal1StatCutT1();
  }
  void  setCal1StatCutT2(Int_t sec, Int_t mod) {
      (*this)[sec][mod].setCal1StatCutT2();
  }
  void  setCal1StatCutT12(Int_t sec, Int_t mod) {
      (*this)[sec][mod].setCal1StatCutT12();
  }
  void  setCal1StatCutWire(Int_t sec, Int_t mod) {
      (*this)[sec][mod].setCal1StatCutWire();
  }
  Int_t  getCal1StatCutT1(Int_t sec, Int_t mod) {
    return (*this)[sec][mod].getCal1StatCutT1();
  }
  Int_t  getCal1StatCutT2(Int_t sec, Int_t mod) {
    return (*this)[sec][mod].getCal1StatCutT2();
  }
  Int_t  getCal1StatCutT12(Int_t sec, Int_t mod) {
    return (*this)[sec][mod].getCal1StatCutT12();
  }
  Int_t  getCal1StatCutWire(Int_t sec, Int_t mod) {
    return (*this)[sec][mod].getCal1StatCutWire();
  }
  Int_t  getCal1StatCutT1T12(Int_t sec, Int_t mod) {
    return (*this)[sec][mod].getCal1StatCutT1T12();
  }
  Int_t  getCal1StatCutAll(Int_t sec, Int_t mod) {
    return (*this)[sec][mod].getCal1StatCutAll();
  }
  Int_t  getCal1StatAll(Int_t sec, Int_t mod) {
    return (*this)[sec][mod].getCal1StatAll();
  }
public:
  static void deleteHMdcCutStat();
  static HMdcCutStat* getExObject();
  static HMdcCutStat* getObject();
  void getCal1StatCut(Int_t,Int_t,Int_t *,Int_t *,Int_t *,Int_t *,Int_t *,Int_t *,Int_t *,Int_t *);
  void setCal1StatCut(Int_t,Int_t,Int_t,Int_t,Int_t,Int_t,Int_t);
  Bool_t init(HParIo* input,Int_t* set);
  Int_t write(HParIo* output) ;
  void putAsciiHeader(TString&);
  Bool_t writeline(Char_t*, Int_t, Int_t);

  HMdcCutStatSec& operator[](Int_t i) {
    return *( static_cast<HMdcCutStatSec*>(fSecs[i]) );
  }
  Int_t getSize() {return fSecs.GetEntries();}
  void clear(void);
  void printParam(void) {
    printf ("HMdcCutStat:\n");
    printf("s m    t1     t2     t12    wire   t1_12   Bump  cutall       all \n");
    for (Int_t i=0;i<getSize();i++)    {
      HMdcCutStatSec &sector = (*this)[i];
      for (Int_t m=0; m<sector.getSize(); m++) {
	HMdcCutStatMod &mod = sector[m];
	printf("%i %i ",i,m);
        mod.printRatio();
      }
    }
  }
  ClassDef(HMdcCutStat,1) 
};

#endif  /*!HMDCCUTSTAT_H*/
 hmdccutstat.h:1
 hmdccutstat.h:2
 hmdccutstat.h:3
 hmdccutstat.h:4
 hmdccutstat.h:5
 hmdccutstat.h:6
 hmdccutstat.h:7
 hmdccutstat.h:8
 hmdccutstat.h:9
 hmdccutstat.h:10
 hmdccutstat.h:11
 hmdccutstat.h:12
 hmdccutstat.h:13
 hmdccutstat.h:14
 hmdccutstat.h:15
 hmdccutstat.h:16
 hmdccutstat.h:17
 hmdccutstat.h:18
 hmdccutstat.h:19
 hmdccutstat.h:20
 hmdccutstat.h:21
 hmdccutstat.h:22
 hmdccutstat.h:23
 hmdccutstat.h:24
 hmdccutstat.h:25
 hmdccutstat.h:26
 hmdccutstat.h:27
 hmdccutstat.h:28
 hmdccutstat.h:29
 hmdccutstat.h:30
 hmdccutstat.h:31
 hmdccutstat.h:32
 hmdccutstat.h:33
 hmdccutstat.h:34
 hmdccutstat.h:35
 hmdccutstat.h:36
 hmdccutstat.h:37
 hmdccutstat.h:38
 hmdccutstat.h:39
 hmdccutstat.h:40
 hmdccutstat.h:41
 hmdccutstat.h:42
 hmdccutstat.h:43
 hmdccutstat.h:44
 hmdccutstat.h:45
 hmdccutstat.h:46
 hmdccutstat.h:47
 hmdccutstat.h:48
 hmdccutstat.h:49
 hmdccutstat.h:50
 hmdccutstat.h:51
 hmdccutstat.h:52
 hmdccutstat.h:53
 hmdccutstat.h:54
 hmdccutstat.h:55
 hmdccutstat.h:56
 hmdccutstat.h:57
 hmdccutstat.h:58
 hmdccutstat.h:59
 hmdccutstat.h:60
 hmdccutstat.h:61
 hmdccutstat.h:62
 hmdccutstat.h:63
 hmdccutstat.h:64
 hmdccutstat.h:65
 hmdccutstat.h:66
 hmdccutstat.h:67
 hmdccutstat.h:68
 hmdccutstat.h:69
 hmdccutstat.h:70
 hmdccutstat.h:71
 hmdccutstat.h:72
 hmdccutstat.h:73
 hmdccutstat.h:74
 hmdccutstat.h:75
 hmdccutstat.h:76
 hmdccutstat.h:77
 hmdccutstat.h:78
 hmdccutstat.h:79
 hmdccutstat.h:80
 hmdccutstat.h:81
 hmdccutstat.h:82
 hmdccutstat.h:83
 hmdccutstat.h:84
 hmdccutstat.h:85
 hmdccutstat.h:86
 hmdccutstat.h:87
 hmdccutstat.h:88
 hmdccutstat.h:89
 hmdccutstat.h:90
 hmdccutstat.h:91
 hmdccutstat.h:92
 hmdccutstat.h:93
 hmdccutstat.h:94
 hmdccutstat.h:95
 hmdccutstat.h:96
 hmdccutstat.h:97
 hmdccutstat.h:98
 hmdccutstat.h:99
 hmdccutstat.h:100
 hmdccutstat.h:101
 hmdccutstat.h:102
 hmdccutstat.h:103
 hmdccutstat.h:104
 hmdccutstat.h:105
 hmdccutstat.h:106
 hmdccutstat.h:107
 hmdccutstat.h:108
 hmdccutstat.h:109
 hmdccutstat.h:110
 hmdccutstat.h:111
 hmdccutstat.h:112
 hmdccutstat.h:113
 hmdccutstat.h:114
 hmdccutstat.h:115
 hmdccutstat.h:116
 hmdccutstat.h:117
 hmdccutstat.h:118
 hmdccutstat.h:119
 hmdccutstat.h:120
 hmdccutstat.h:121
 hmdccutstat.h:122
 hmdccutstat.h:123
 hmdccutstat.h:124
 hmdccutstat.h:125
 hmdccutstat.h:126
 hmdccutstat.h:127
 hmdccutstat.h:128
 hmdccutstat.h:129
 hmdccutstat.h:130
 hmdccutstat.h:131
 hmdccutstat.h:132
 hmdccutstat.h:133
 hmdccutstat.h:134
 hmdccutstat.h:135
 hmdccutstat.h:136
 hmdccutstat.h:137
 hmdccutstat.h:138
 hmdccutstat.h:139
 hmdccutstat.h:140
 hmdccutstat.h:141
 hmdccutstat.h:142
 hmdccutstat.h:143
 hmdccutstat.h:144
 hmdccutstat.h:145
 hmdccutstat.h:146
 hmdccutstat.h:147
 hmdccutstat.h:148
 hmdccutstat.h:149
 hmdccutstat.h:150
 hmdccutstat.h:151
 hmdccutstat.h:152
 hmdccutstat.h:153
 hmdccutstat.h:154
 hmdccutstat.h:155
 hmdccutstat.h:156
 hmdccutstat.h:157
 hmdccutstat.h:158
 hmdccutstat.h:159
 hmdccutstat.h:160
 hmdccutstat.h:161
 hmdccutstat.h:162
 hmdccutstat.h:163
 hmdccutstat.h:164
 hmdccutstat.h:165
 hmdccutstat.h:166
 hmdccutstat.h:167
 hmdccutstat.h:168
 hmdccutstat.h:169
 hmdccutstat.h:170
 hmdccutstat.h:171
 hmdccutstat.h:172
 hmdccutstat.h:173
 hmdccutstat.h:174
 hmdccutstat.h:175
 hmdccutstat.h:176
 hmdccutstat.h:177
 hmdccutstat.h:178
 hmdccutstat.h:179
 hmdccutstat.h:180
 hmdccutstat.h:181
 hmdccutstat.h:182
 hmdccutstat.h:183
 hmdccutstat.h:184
 hmdccutstat.h:185
 hmdccutstat.h:186
 hmdccutstat.h:187
 hmdccutstat.h:188
 hmdccutstat.h:189
 hmdccutstat.h:190
 hmdccutstat.h:191
 hmdccutstat.h:192
 hmdccutstat.h:193
 hmdccutstat.h:194
 hmdccutstat.h:195