ROOT logo
//*-- AUTHOR : Jochen Markert

//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////
//HMdcCutStat
//
//  class for statistics on cut time1, time2 and time2-time1
//  and wires less than 4 per module
//////////////////////////////////////////////////////////////

#include "hmdccutstat.h"
#include "hades.h"
#include "hruntimedb.h"
#include "hmdcparasciifileio.h"
#include "hpario.h"
#include "hmdcdetector.h"
#include "hspectrometer.h"

HMdcCutStat* HMdcCutStat::fMdcCutStat=0;
HMdcCutStat::HMdcCutStat(const Char_t* name,const Char_t* title,
			 const Char_t* context,Int_t s,Int_t m)
    : HParSet(name,title,context), fSecs(s)
{
    fMdcCutStat=this;
    for (Int_t i=0;i<s; i++) fSecs.AddAt(new HMdcCutStatSec(m),i);
    setNameTitle();
    if (gHades) {
	fMdc = (HMdcDetector*)(((HSpectrometer*)(gHades->getSetup()))->getDetector("Mdc"));
    } else {
	fMdc = 0;
    }
}
HMdcCutStat::~HMdcCutStat()
{}
HMdcCutStat* HMdcCutStat::getExObject()
{
    return fMdcCutStat;
}
HMdcCutStat* HMdcCutStat::getObject()
{
    if(!fMdcCutStat) fMdcCutStat=new HMdcCutStat();
    return fMdcCutStat;
}
void HMdcCutStat::deleteHMdcCutStat()
{
    if(fMdcCutStat) delete fMdcCutStat;
    fMdcCutStat=0;
}
void HMdcCutStat::clear(void)
{
    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];
	    mod.clear();
	}
    }
}
void HMdcCutStat::setNameTitle()
{
    strcpy(detName,"Mdc");
}
void HMdcCutStat::getCal1StatCut(Int_t s,Int_t mod, Int_t *cT1, Int_t *cT2,
				 Int_t *cT12, Int_t *cWire,Int_t* cT1T12,Int_t* cBump,Int_t* cAll,Int_t* all)
{   // returns values of different cut statistics to Int_t*
    // cT1    : cut in T1
    // cT2    : cut in T2
    // cT12   : cut in T2-T1
    // cWire  : cut in number of Wires <4
    // cT1T12 : cut in T1 and T2-T1
    // cBump  : cut in T1 and T2-T1
    // cAll   : all cuts
    // all    : all hits

    HMdcCutStatMod &m = (*this)[s][mod];
    *cT1    = m.getCal1StatCutT1();
    *cT2    = m.getCal1StatCutT2();
    *cT12   = m.getCal1StatCutT12();
    *cWire  = m.getCal1StatCutWire();
    *cT1T12 = m.getCal1StatCutT1T12();
    *cBump  = m.getCal1StatCutBump();
    *cAll   = m.getCal1StatCutAll();
    *all    = m.getCal1StatAll();
}
void HMdcCutStat::setCal1StatCut(Int_t s,Int_t mod, Int_t cT1, Int_t cT2,
				 Int_t cT12,Int_t cBump, Int_t cWire)
{
    // counts up values of different cut statistics
    // cT1    : cut in T1
    // cT2    : cut in T2
    // cT12   : cut in T2-T1
    // cWire  : cut in number of Wires <4
    // cT1T12 : cut in T1 and T2-T1 internaly filled
    // cBump  : cut in T1 and T2-T1 internaly filled
    // cAll   : all cuts            internaly filled
    // all    : all hits            internaly filled

    HMdcCutStatMod &m = (*this)[s][mod];
    if(cT1==1)    m.setCal1StatCutT1();
    if(cT2==1)    m.setCal1StatCutT2();
    if(cT12==1)   m.setCal1StatCutT12();
    if(cWire==1)  m.setCal1StatCutWire();
    if(cT1==1  ||
       cT12==1)   m.setCal1StatCutT1T12();
    if(cBump==1)  m.setCal1StatCutBump();
    if(cT1==1  ||
       cT2==1  ||
       cT12==1 ||
       cBump==1 ||
       cWire==1)  m.setCal1StatCutAll();
                  m.setCal1StatAll();
}
Bool_t HMdcCutStat::init(HParIo* inp,Int_t* set) {
    // intitializes the container from an input
    HDetParIo* input=inp->getDetParIo("HMdcParIo");
    if (input) return (input->init(this,set));
    return kFALSE;
}
Int_t HMdcCutStat::write(HParIo* output) {
    // writes the container to an output
    HDetParIo* out=output->getDetParIo("HMdcParIo");
    if (out) return out->write(this);
    return -1;
}
void HMdcCutStat::putAsciiHeader(TString& b) {
    b =
	"#######################################################################\n"
	"# Statistic onDrift time cuts for noise reduction of the MDC\n"
	"# Format:\n"
	"# sector mod ct1 ct2 ct12 cwires ct1t12 cbump call all \n"
	"#######################################################################\n";
}
Bool_t HMdcCutStat::writeline(Char_t*buf, Int_t s, Int_t m) {
    Bool_t r = kTRUE;
    if (fMdc) {
	if (fMdc->getModule(s,m) != 0) {
	    if  (s>-1 && s<getSize()) {
		HMdcCutStatSec &sector = (*this)[s];
		if (m>-1 && m<sector.getSize()) {
		    sprintf(buf,"%i %i %i %i %i %i %i %i %i %i \n",
			    s,m,
			    (*this)[s][m].getCal1StatCutT1(),
			    (*this)[s][m].getCal1StatCutT2(),
			    (*this)[s][m].getCal1StatCutT12(),
			    (*this)[s][m].getCal1StatCutWire(),
                            (*this)[s][m].getCal1StatCutT1T12(),
                            (*this)[s][m].getCal1StatCutBump(),
                            (*this)[s][m].getCal1StatCutAll(),
                            (*this)[s][m].getCal1StatAll());

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