ROOT logo
//_HADES_CLASS_DESCRIPTION 
////////////////////////////////////////////////////////////////////////////
//*-- AUTHOR : J. Markert
// Modify 05.04.2013: O.Pechenova
////////////////////////////////////////////////////////////////////////////
// HMdcWireStat
//
//  Container class for lookup parameters of the status of the
//  wire (working or dead + noise + efficiency).
//  The parameters are stored in TH2F histograms which can be plotted.
//  This container is needed by HMdcDigitizer and HMdcTrackFinder
//
//  THe Status value is coded in the following way
//
//  status of the wire: 1=working,
//                     -1=not connected,
//                     -3=no correct offset,
//                     -5=drop in efficiency,
//                     -7=dead,
//                    -10=init
//
//
////////////////////////////////////////////////////////////////////////////
#include "hmdcwirestat.h"
#include "hmessagemgr.h"
#include "hparamlist.h"
#include "TStyle.h"
#include "TObjArray.h"
#include "TH1.h"
#include "TH2F.h"
#include <stdlib.h>

ClassImp(HMdcWireStat)

HMdcWireStat::HMdcWireStat(const Char_t* name,const Char_t* title,
                           const Char_t* context)
    : HParCond(name,title,context)
{
    //
    Int_t size = 6*4*6*220;
    statusmap .Set(size);
    efficiency.Set(size);
    offset    .Set(size);
    mb        .Set(size);
    tdc       .Set(size);
    clear();
}
HMdcWireStat::~HMdcWireStat()
{
    // destructor
}
void HMdcWireStat::clear()
{
    statusmap .Reset(-10);
    efficiency.Reset(-10);
    offset    .Reset(-10);
    mb        .Reset(-10);
    tdc       .Reset(-10);

    status=kFALSE;
    resetInputVersions();
    changed=kFALSE;
}
void HMdcWireStat::printStats()
{
    Int_t working;      //  1
    Int_t notconnected; // -1
    Int_t nooffset;     // -3
    Int_t dropeffic;    // -5
    Int_t dead;         // -7

    Int_t workingsum      = 0;
    Int_t notconnectedsum = 0;
    Int_t nooffsetsum     = 0;
    Int_t dropefficsum    = 0;
    Int_t deadsum         = 0;
    Int_t stat;
    for(Int_t s = 0; s < 6; s ++){
	for(Int_t m = 0; m < 4; m ++){
	    working      = 0;
	    notconnected = 0;
	    nooffset     = 0;
	    dropeffic    = 0;
	    dead         = 0;
	    for(Int_t l = 0; l < 6; l ++){
		for(Int_t c = 0; c < 220; c ++){
	 
		    stat = statusmap[index(s,m,l,c)];
                    if(stat ==  1) working ++;
                    if(stat == -1) notconnected ++;
                    if(stat == -3) nooffset ++;
                    if(stat == -5) dropeffic ++;
                    if(stat == -7) dead ++;
		}
	    }
	    workingsum     = workingsum + working;
	    notconnectedsum= notconnectedsum + notconnected;
	    nooffsetsum    = nooffsetsum + nooffset;
	    dropefficsum   = dropefficsum + dropeffic;
            deadsum        = deadsum + dead;
	    printf("s %i m %i \n" ,s,m);
	    printf("          working: %i \n",working);
	    printf("    not connected: %i \n",notconnected);
	    printf("   no calibration: %i \n",nooffset);
	    printf("drop in efficiency: %i \n",dropeffic);
            printf("             dead: %i \n",dead);
	}
    }

    printf("SUM\n");
    printf("          working: %i \n",workingsum);
    printf("    not connected: %i \n",notconnectedsum);
    printf("   no calibration: %i \n",nooffsetsum);
    printf("drop in efficiency: %i \n",dropefficsum);
    printf("             dead: %i \n",deadsum);

}
void HMdcWireStat::printStatsSum()
{
    Int_t working;      //  1
    Int_t notconnected; // -1
    Int_t nooffset;     // -3
    Int_t dropeffic;    // -5
    Int_t dead;         // -7

    Int_t workingsum      = 0;
    Int_t notconnectedsum = 0;
    Int_t nooffsetsum     = 0;
    Int_t dropefficsum    = 0;
    Int_t deadsum         = 0;
    Int_t stat;
    for(Int_t s = 0; s < 6; s ++){
	for(Int_t m = 0; m < 4; m ++){
	    working      = 0;
	    notconnected = 0;
	    nooffset     = 0;
	    dropeffic    = 0;
	    dead         = 0;
	    for(Int_t l = 0; l < 6; l ++){
		for(Int_t c = 0; c< 220; c ++){
	 
		    stat=statusmap[index(s,m,l,c)];
                    if(stat ==  1) working ++;
                    if(stat == -1) notconnected ++;
                    if(stat == -3) nooffset ++;
                    if(stat == -5) dropeffic ++;
                    if(stat == -7) dead ++;
		}
	    }
	    workingsum     = workingsum + working;
	    notconnectedsum= notconnectedsum + notconnected;
	    nooffsetsum    = nooffsetsum + nooffset;
	    dropefficsum   = dropefficsum + dropeffic;
            deadsum        = deadsum + dead;
	}
    }

    printf("SUM\n");
    printf("          working: %i \n",workingsum);
    printf("    not connected: %i \n",notconnectedsum);
    printf("   no calibration: %i \n",nooffsetsum);
    printf("drop in efficiency: %i \n",dropefficsum);
    printf("             dead: %i \n",deadsum);

}
Int_t HMdcWireStat::getDeadWires()
{
    Int_t working;      //  1
    Int_t notconnected; // -1
    Int_t nooffset;     // -3
    Int_t dead;         // -7

    Int_t workingsum      = 0;
    Int_t notconnectedsum = 0;
    Int_t nooffsetsum     = 0;
    Int_t deadsum         = 0;
    Int_t stat;
    for(Int_t s = 0; s < 6; s ++){
	for(Int_t m = 0; m < 4; m ++){
	    working      = 0;
	    notconnected = 0;
	    nooffset     = 0;
	    dead         = 0;
	    for(Int_t l = 0; l < 6; l ++){
		for(Int_t c = 0; c < 220; c ++){
	 
		    stat = statusmap[index(s,m,l,c)];
                    if(stat ==  1) working ++;
                    if(stat == -1) notconnected ++;
                    if(stat == -3) nooffset ++;
                    if(stat == -7) dead ++;
		}
	    }
	    workingsum      = workingsum + working;
	    notconnectedsum = notconnectedsum + notconnected;
	    nooffsetsum     = nooffsetsum + nooffset;
            deadsum         = deadsum + dead;
	}
    }
    return nooffsetsum;
}
Int_t HMdcWireStat::getDeadWires(Int_t sec,Int_t mod)
{
    Int_t working      = 0;
    Int_t notconnected = 0;
    Int_t nooffset     = 0;
    Int_t dead         = 0;
    Int_t s = sec;
    Int_t m = mod;
    Int_t stat;
    for(Int_t l = 0; l < 6; l ++){
	for(Int_t c = 0; c <220; c ++){

	    stat = statusmap[index(s,m,l,c)];
	    if(stat ==  1) working ++;
	    if(stat == -1) notconnected ++;
	    if(stat == -3) nooffset ++;
	    if(stat == -7) dead ++;
	}
    }
    return nooffset;
}
void HMdcWireStat::printParam(void)
{
    // prints the parameters of HMdcWireStat to the screen.
    SEPERATOR_msg("#",60);
    INFO_msg(10,HMessageMgr::DET_MDC,"HMdcWireStat:");
    INFO_msg(10,HMessageMgr::DET_MDC,"Status:");
    for(Int_t s = 0; s < 6; s ++){
	for(Int_t m = 0; m < 4; m ++){
	    for(Int_t l = 0; l < 6; l ++){
		for(Int_t c = 0; c < 220; c ++){
                    Int_t ind = index(s,m,l,c);
		    gHades->getMsg()->info(10,HMessageMgr::DET_MDC,GetName(),
					   "s %i m %i l %i c %3i mb %2i tdc %2i status %i efficiency %5.4f offset %5.4f",
					   s,m,l,c, mb[ind], tdc[ind], statusmap[ind], efficiency[ind], offset[ind]);
		}
	    }
	}
    }
    SEPERATOR_msg("#",60);
}
void HMdcWireStat::putParams(HParamList* l)
{
    // Puts all params of HMdcWireStat to the parameter list of
    // HParamList (which ist used by the io);
    if (!l) return;

    l->add("mb"        ,mb);
    l->add("tdc"       ,tdc);
    l->add("status"    ,statusmap);
    l->add("efficiency",efficiency);
    l->add("offset"    ,offset);
}
Bool_t HMdcWireStat::getParams(HParamList* l)
{
    if (!l) return kFALSE;

    if(!( l->fill("mb"        ,&mb )))       return kFALSE;
    if(!( l->fill("tdc"       ,&tdc)))       return kFALSE;
    if(!( l->fill("status"    ,&statusmap))) return kFALSE;
    if(!( l->fill("efficiency",&efficiency)))return kFALSE;
    if(!( l->fill("offset"    ,&offset    )))return kFALSE;


    return kTRUE;
}
TCanvas* HMdcWireStat::plotStatusMbVsTdc()
{
    gStyle->SetOptStat(0);
    Char_t name[400];
    sprintf(name,"%s","Mb_vs_Tdc");
    TCanvas* result = new TCanvas(name,name,1000,800);
    result->Divide(6,4);

    TH2F* hmb_vs_tdc[6][4];
    Int_t mbo,t,st;
    for(Int_t sec = 0; sec < 6; sec ++){
        for(Int_t mod = 0; mod < 4; mod ++){
            sprintf(name,"%s%i%s%i","hStatusMb_vs_Tdc_sec",sec,"_mod",mod);
            hmb_vs_tdc[sec][mod] = new TH2F(name,name,96,0,96,16,0,16);
            hmb_vs_tdc[sec][mod]->SetXTitle("tdc channel");
            hmb_vs_tdc[sec][mod]->SetYTitle("Mbo");
	    for(Int_t bx = 0; bx < 96; bx ++){
		for(Int_t by = 0; by < 16; by ++){
		    hmb_vs_tdc[sec][mod]->SetBinContent(bx+1,by+1,-10);
		}
	    }
            for(Int_t l = 0; l < 6; l ++){
                for(Int_t c = 0; c < 220; c ++){
                    Int_t ind = index(sec,mod,l,c);
		    mbo = mb       [ind];
                    t   = tdc      [ind];
                    st  = statusmap[ind];
                    hmb_vs_tdc[sec][mod]->SetBinContent(t+1,mbo+1,st);
                }
            }
            hmb_vs_tdc[sec][mod]->SetMinimum(-4);
            result->cd(mod*6+sec+1);
            hmb_vs_tdc[sec][mod]->DrawCopy("Colz");
        }
    }
    return result;
}
TCanvas* HMdcWireStat::plotEfficiencyMbVsTdc()
{
    gStyle->SetOptStat(0);
    Char_t name[400];
    sprintf(name,"%s","Mb_vs_Tdc");
    TCanvas* result = new TCanvas(name,name,1000,800);
    result->Divide(6,4);

    TH2F* hmb_vs_tdc[6][4];
    Int_t mbo,t;
    Float_t eff;
    for(Int_t sec = 0; sec < 6; sec ++){
        for(Int_t mod = 0; mod < 4; mod ++){
            sprintf(name,"%s%i%s%i","hEfficiencyMb_vs_Tdc_sec",sec,"_mod",mod);
            hmb_vs_tdc[sec][mod] = new TH2F(name,name,96,0,96,16,0,16);
            hmb_vs_tdc[sec][mod]->SetXTitle("tdc channel");
            hmb_vs_tdc[sec][mod]->SetYTitle("Mbo");

	    for(Int_t bx = 0; bx < 96; bx ++){
		for(Int_t by = 0; by < 16; by ++){
		    hmb_vs_tdc[sec][mod]->SetBinContent(bx+1,by+1,-10);
		}
	    }

	    for(Int_t l = 0; l < 6; l ++){
                for(Int_t c = 0; c < 220; c ++){
		    Int_t ind = index(sec,mod,l,c);
		    mbo = mb        [ind];
		    t   = tdc       [ind];
		    eff = efficiency[ind];
		    hmb_vs_tdc[sec][mod]->SetBinContent(t+1,mbo+1,eff);
                }
            }
            result->cd(mod*6+sec+1);
            hmb_vs_tdc[sec][mod]->DrawCopy("Colz");
        }
    }
    return result;
}

TCanvas* HMdcWireStat::plotOffsetMbVsTdc()
{
    gStyle->SetOptStat(0);
    Char_t name[400];
    sprintf(name,"%s","Mb_vs_Tdc");
    TCanvas* result = new TCanvas(name,name,1000,800);
    result->Divide(6,4);

    TH2F* hmb_vs_tdc[6][4];
    Int_t mbo,t;
    Float_t off;
    for(Int_t sec = 0; sec < 6; sec ++){
        for(Int_t mod = 0; mod < 4; mod ++){
            sprintf(name,"%s%i%s%i","hOffsetMb_vs_Tdc_sec",sec,"_mod",mod);
            hmb_vs_tdc[sec][mod] = new TH2F(name,name,96,0,96,16,0,16);
            hmb_vs_tdc[sec][mod]->SetXTitle("tdc channel");
            hmb_vs_tdc[sec][mod]->SetYTitle("Mbo");

	    for(Int_t bx = 0; bx < 96; bx ++){
		for(Int_t by = 0; by < 16; by ++){
		    hmb_vs_tdc[sec][mod]->SetBinContent(bx+1,by+1,-10);
		}
	    }

	    for(Int_t l = 0; l < 6; l ++){
                for(Int_t c = 0; c < 220; c ++){
                    Int_t ind = index(sec,mod,l,c);
		    mbo = mb    [ind];
                    t   = tdc   [ind];
                    off = offset[ind];
                    hmb_vs_tdc[sec][mod]->SetBinContent(t+1,mbo+1,off);
                }
            }
            result->cd(mod*6+sec+1);
            hmb_vs_tdc[sec][mod]->DrawCopy("Colz");
        }
    }
    return result;
}
TCanvas* HMdcWireStat::plotStatus(Int_t sec,Int_t mod)
{
    gStyle->SetOptStat(0);
    Char_t name[400];
    sprintf(name,"status_s%i_m%i",sec,mod);
    TCanvas* result = new TCanvas(name,name,1000,800);
    result->Divide(1,6);

    TH1F* hmdcstatus[6];
    Int_t st;
    for(Int_t l = 0; l < 6; l ++){
        sprintf(name,"%s%i%s%i%s%i","hmdcstatus_sec",sec,"_mod",mod,"_layer",l);
        hmdcstatus[l] = new TH1F(name,name,220,0,220);
        hmdcstatus[l]->SetXTitle("wire number");
        hmdcstatus[l]->SetYTitle("status");
        hmdcstatus[l]->SetFillColor(8);
        for(Int_t  c = 0; c < 220; c ++){
            Int_t ind = index(sec,mod,l,c);
            st  = statusmap[ind];
	    hmdcstatus[l]->SetBinContent(c+1,st);
        }
        result->cd(l+1);
        hmdcstatus[l]->DrawCopy();
    }
    return result;
}
TCanvas* HMdcWireStat::plotEfficiency(Int_t sec,Int_t mod)
{
    gStyle->SetOptStat(0);
    Char_t name[400];
    sprintf(name,"efficiency_s%i_m%i",sec,mod);
    TCanvas* result = new TCanvas(name,name,1000,800);
    result->Divide(1,6);

    TH1F* hmdcefficiency[6];
    Float_t eff;
    for(Int_t l = 0; l < 6; l ++){
        sprintf(name,"%s%i%s%i%s%i","hmdcefficiency_sec",sec,"_mod",mod,"_layer",l);
        hmdcefficiency[l] = new TH1F(name,name,220,0,220);
        hmdcefficiency[l]->SetXTitle("wire number");
        hmdcefficiency[l]->SetYTitle("efficiency");
        for(Int_t c = 0; c < 220; c ++){
            Int_t ind = index(sec,mod,l,c);
            eff = efficiency[ind];
            hmdcefficiency[l]->SetBinContent(c+1,eff);
        }
        result->cd(l+1);
        hmdcefficiency[l]->DrawCopy();
    }
    return result;
}
TCanvas* HMdcWireStat::plotOffset(Int_t sec,Int_t mod)
{
    gStyle->SetOptStat(0);
    Char_t name[400];
    sprintf(name,"offset_s%i_m%i",sec,mod);
    TCanvas* result = new TCanvas(name,name,1000,800);
    result->Divide(1,6);

    TH1F* hmdcoffset[6];
    Float_t off;
    for(Int_t l = 0; l < 6; l ++){
        sprintf(name,"%s%i%s%i%s%i","hmdcoffset_sec",sec,"_mod",mod,"_layer",l);
        hmdcoffset[l] = new TH1F(name,name,220,0,220);
        hmdcoffset[l]->SetXTitle("wire number");
        hmdcoffset[l]->SetYTitle("offset [ns]");
        for(Int_t c = 0; c < 220; c ++){
            Int_t ind = index(sec,mod,l,c);
            off = offset[ind];
            hmdcoffset[l]->SetBinContent(c+1,off);
        }
        result->cd(l+1);
        hmdcoffset[l]->DrawCopy();
    }
    return result;
}

 hmdcwirestat.cc:1
 hmdcwirestat.cc:2
 hmdcwirestat.cc:3
 hmdcwirestat.cc:4
 hmdcwirestat.cc:5
 hmdcwirestat.cc:6
 hmdcwirestat.cc:7
 hmdcwirestat.cc:8
 hmdcwirestat.cc:9
 hmdcwirestat.cc:10
 hmdcwirestat.cc:11
 hmdcwirestat.cc:12
 hmdcwirestat.cc:13
 hmdcwirestat.cc:14
 hmdcwirestat.cc:15
 hmdcwirestat.cc:16
 hmdcwirestat.cc:17
 hmdcwirestat.cc:18
 hmdcwirestat.cc:19
 hmdcwirestat.cc:20
 hmdcwirestat.cc:21
 hmdcwirestat.cc:22
 hmdcwirestat.cc:23
 hmdcwirestat.cc:24
 hmdcwirestat.cc:25
 hmdcwirestat.cc:26
 hmdcwirestat.cc:27
 hmdcwirestat.cc:28
 hmdcwirestat.cc:29
 hmdcwirestat.cc:30
 hmdcwirestat.cc:31
 hmdcwirestat.cc:32
 hmdcwirestat.cc:33
 hmdcwirestat.cc:34
 hmdcwirestat.cc:35
 hmdcwirestat.cc:36
 hmdcwirestat.cc:37
 hmdcwirestat.cc:38
 hmdcwirestat.cc:39
 hmdcwirestat.cc:40
 hmdcwirestat.cc:41
 hmdcwirestat.cc:42
 hmdcwirestat.cc:43
 hmdcwirestat.cc:44
 hmdcwirestat.cc:45
 hmdcwirestat.cc:46
 hmdcwirestat.cc:47
 hmdcwirestat.cc:48
 hmdcwirestat.cc:49
 hmdcwirestat.cc:50
 hmdcwirestat.cc:51
 hmdcwirestat.cc:52
 hmdcwirestat.cc:53
 hmdcwirestat.cc:54
 hmdcwirestat.cc:55
 hmdcwirestat.cc:56
 hmdcwirestat.cc:57
 hmdcwirestat.cc:58
 hmdcwirestat.cc:59
 hmdcwirestat.cc:60
 hmdcwirestat.cc:61
 hmdcwirestat.cc:62
 hmdcwirestat.cc:63
 hmdcwirestat.cc:64
 hmdcwirestat.cc:65
 hmdcwirestat.cc:66
 hmdcwirestat.cc:67
 hmdcwirestat.cc:68
 hmdcwirestat.cc:69
 hmdcwirestat.cc:70
 hmdcwirestat.cc:71
 hmdcwirestat.cc:72
 hmdcwirestat.cc:73
 hmdcwirestat.cc:74
 hmdcwirestat.cc:75
 hmdcwirestat.cc:76
 hmdcwirestat.cc:77
 hmdcwirestat.cc:78
 hmdcwirestat.cc:79
 hmdcwirestat.cc:80
 hmdcwirestat.cc:81
 hmdcwirestat.cc:82
 hmdcwirestat.cc:83
 hmdcwirestat.cc:84
 hmdcwirestat.cc:85
 hmdcwirestat.cc:86
 hmdcwirestat.cc:87
 hmdcwirestat.cc:88
 hmdcwirestat.cc:89
 hmdcwirestat.cc:90
 hmdcwirestat.cc:91
 hmdcwirestat.cc:92
 hmdcwirestat.cc:93
 hmdcwirestat.cc:94
 hmdcwirestat.cc:95
 hmdcwirestat.cc:96
 hmdcwirestat.cc:97
 hmdcwirestat.cc:98
 hmdcwirestat.cc:99
 hmdcwirestat.cc:100
 hmdcwirestat.cc:101
 hmdcwirestat.cc:102
 hmdcwirestat.cc:103
 hmdcwirestat.cc:104
 hmdcwirestat.cc:105
 hmdcwirestat.cc:106
 hmdcwirestat.cc:107
 hmdcwirestat.cc:108
 hmdcwirestat.cc:109
 hmdcwirestat.cc:110
 hmdcwirestat.cc:111
 hmdcwirestat.cc:112
 hmdcwirestat.cc:113
 hmdcwirestat.cc:114
 hmdcwirestat.cc:115
 hmdcwirestat.cc:116
 hmdcwirestat.cc:117
 hmdcwirestat.cc:118
 hmdcwirestat.cc:119
 hmdcwirestat.cc:120
 hmdcwirestat.cc:121
 hmdcwirestat.cc:122
 hmdcwirestat.cc:123
 hmdcwirestat.cc:124
 hmdcwirestat.cc:125
 hmdcwirestat.cc:126
 hmdcwirestat.cc:127
 hmdcwirestat.cc:128
 hmdcwirestat.cc:129
 hmdcwirestat.cc:130
 hmdcwirestat.cc:131
 hmdcwirestat.cc:132
 hmdcwirestat.cc:133
 hmdcwirestat.cc:134
 hmdcwirestat.cc:135
 hmdcwirestat.cc:136
 hmdcwirestat.cc:137
 hmdcwirestat.cc:138
 hmdcwirestat.cc:139
 hmdcwirestat.cc:140
 hmdcwirestat.cc:141
 hmdcwirestat.cc:142
 hmdcwirestat.cc:143
 hmdcwirestat.cc:144
 hmdcwirestat.cc:145
 hmdcwirestat.cc:146
 hmdcwirestat.cc:147
 hmdcwirestat.cc:148
 hmdcwirestat.cc:149
 hmdcwirestat.cc:150
 hmdcwirestat.cc:151
 hmdcwirestat.cc:152
 hmdcwirestat.cc:153
 hmdcwirestat.cc:154
 hmdcwirestat.cc:155
 hmdcwirestat.cc:156
 hmdcwirestat.cc:157
 hmdcwirestat.cc:158
 hmdcwirestat.cc:159
 hmdcwirestat.cc:160
 hmdcwirestat.cc:161
 hmdcwirestat.cc:162
 hmdcwirestat.cc:163
 hmdcwirestat.cc:164
 hmdcwirestat.cc:165
 hmdcwirestat.cc:166
 hmdcwirestat.cc:167
 hmdcwirestat.cc:168
 hmdcwirestat.cc:169
 hmdcwirestat.cc:170
 hmdcwirestat.cc:171
 hmdcwirestat.cc:172
 hmdcwirestat.cc:173
 hmdcwirestat.cc:174
 hmdcwirestat.cc:175
 hmdcwirestat.cc:176
 hmdcwirestat.cc:177
 hmdcwirestat.cc:178
 hmdcwirestat.cc:179
 hmdcwirestat.cc:180
 hmdcwirestat.cc:181
 hmdcwirestat.cc:182
 hmdcwirestat.cc:183
 hmdcwirestat.cc:184
 hmdcwirestat.cc:185
 hmdcwirestat.cc:186
 hmdcwirestat.cc:187
 hmdcwirestat.cc:188
 hmdcwirestat.cc:189
 hmdcwirestat.cc:190
 hmdcwirestat.cc:191
 hmdcwirestat.cc:192
 hmdcwirestat.cc:193
 hmdcwirestat.cc:194
 hmdcwirestat.cc:195
 hmdcwirestat.cc:196
 hmdcwirestat.cc:197
 hmdcwirestat.cc:198
 hmdcwirestat.cc:199
 hmdcwirestat.cc:200
 hmdcwirestat.cc:201
 hmdcwirestat.cc:202
 hmdcwirestat.cc:203
 hmdcwirestat.cc:204
 hmdcwirestat.cc:205
 hmdcwirestat.cc:206
 hmdcwirestat.cc:207
 hmdcwirestat.cc:208
 hmdcwirestat.cc:209
 hmdcwirestat.cc:210
 hmdcwirestat.cc:211
 hmdcwirestat.cc:212
 hmdcwirestat.cc:213
 hmdcwirestat.cc:214
 hmdcwirestat.cc:215
 hmdcwirestat.cc:216
 hmdcwirestat.cc:217
 hmdcwirestat.cc:218
 hmdcwirestat.cc:219
 hmdcwirestat.cc:220
 hmdcwirestat.cc:221
 hmdcwirestat.cc:222
 hmdcwirestat.cc:223
 hmdcwirestat.cc:224
 hmdcwirestat.cc:225
 hmdcwirestat.cc:226
 hmdcwirestat.cc:227
 hmdcwirestat.cc:228
 hmdcwirestat.cc:229
 hmdcwirestat.cc:230
 hmdcwirestat.cc:231
 hmdcwirestat.cc:232
 hmdcwirestat.cc:233
 hmdcwirestat.cc:234
 hmdcwirestat.cc:235
 hmdcwirestat.cc:236
 hmdcwirestat.cc:237
 hmdcwirestat.cc:238
 hmdcwirestat.cc:239
 hmdcwirestat.cc:240
 hmdcwirestat.cc:241
 hmdcwirestat.cc:242
 hmdcwirestat.cc:243
 hmdcwirestat.cc:244
 hmdcwirestat.cc:245
 hmdcwirestat.cc:246
 hmdcwirestat.cc:247
 hmdcwirestat.cc:248
 hmdcwirestat.cc:249
 hmdcwirestat.cc:250
 hmdcwirestat.cc:251
 hmdcwirestat.cc:252
 hmdcwirestat.cc:253
 hmdcwirestat.cc:254
 hmdcwirestat.cc:255
 hmdcwirestat.cc:256
 hmdcwirestat.cc:257
 hmdcwirestat.cc:258
 hmdcwirestat.cc:259
 hmdcwirestat.cc:260
 hmdcwirestat.cc:261
 hmdcwirestat.cc:262
 hmdcwirestat.cc:263
 hmdcwirestat.cc:264
 hmdcwirestat.cc:265
 hmdcwirestat.cc:266
 hmdcwirestat.cc:267
 hmdcwirestat.cc:268
 hmdcwirestat.cc:269
 hmdcwirestat.cc:270
 hmdcwirestat.cc:271
 hmdcwirestat.cc:272
 hmdcwirestat.cc:273
 hmdcwirestat.cc:274
 hmdcwirestat.cc:275
 hmdcwirestat.cc:276
 hmdcwirestat.cc:277
 hmdcwirestat.cc:278
 hmdcwirestat.cc:279
 hmdcwirestat.cc:280
 hmdcwirestat.cc:281
 hmdcwirestat.cc:282
 hmdcwirestat.cc:283
 hmdcwirestat.cc:284
 hmdcwirestat.cc:285
 hmdcwirestat.cc:286
 hmdcwirestat.cc:287
 hmdcwirestat.cc:288
 hmdcwirestat.cc:289
 hmdcwirestat.cc:290
 hmdcwirestat.cc:291
 hmdcwirestat.cc:292
 hmdcwirestat.cc:293
 hmdcwirestat.cc:294
 hmdcwirestat.cc:295
 hmdcwirestat.cc:296
 hmdcwirestat.cc:297
 hmdcwirestat.cc:298
 hmdcwirestat.cc:299
 hmdcwirestat.cc:300
 hmdcwirestat.cc:301
 hmdcwirestat.cc:302
 hmdcwirestat.cc:303
 hmdcwirestat.cc:304
 hmdcwirestat.cc:305
 hmdcwirestat.cc:306
 hmdcwirestat.cc:307
 hmdcwirestat.cc:308
 hmdcwirestat.cc:309
 hmdcwirestat.cc:310
 hmdcwirestat.cc:311
 hmdcwirestat.cc:312
 hmdcwirestat.cc:313
 hmdcwirestat.cc:314
 hmdcwirestat.cc:315
 hmdcwirestat.cc:316
 hmdcwirestat.cc:317
 hmdcwirestat.cc:318
 hmdcwirestat.cc:319
 hmdcwirestat.cc:320
 hmdcwirestat.cc:321
 hmdcwirestat.cc:322
 hmdcwirestat.cc:323
 hmdcwirestat.cc:324
 hmdcwirestat.cc:325
 hmdcwirestat.cc:326
 hmdcwirestat.cc:327
 hmdcwirestat.cc:328
 hmdcwirestat.cc:329
 hmdcwirestat.cc:330
 hmdcwirestat.cc:331
 hmdcwirestat.cc:332
 hmdcwirestat.cc:333
 hmdcwirestat.cc:334
 hmdcwirestat.cc:335
 hmdcwirestat.cc:336
 hmdcwirestat.cc:337
 hmdcwirestat.cc:338
 hmdcwirestat.cc:339
 hmdcwirestat.cc:340
 hmdcwirestat.cc:341
 hmdcwirestat.cc:342
 hmdcwirestat.cc:343
 hmdcwirestat.cc:344
 hmdcwirestat.cc:345
 hmdcwirestat.cc:346
 hmdcwirestat.cc:347
 hmdcwirestat.cc:348
 hmdcwirestat.cc:349
 hmdcwirestat.cc:350
 hmdcwirestat.cc:351
 hmdcwirestat.cc:352
 hmdcwirestat.cc:353
 hmdcwirestat.cc:354
 hmdcwirestat.cc:355
 hmdcwirestat.cc:356
 hmdcwirestat.cc:357
 hmdcwirestat.cc:358
 hmdcwirestat.cc:359
 hmdcwirestat.cc:360
 hmdcwirestat.cc:361
 hmdcwirestat.cc:362
 hmdcwirestat.cc:363
 hmdcwirestat.cc:364
 hmdcwirestat.cc:365
 hmdcwirestat.cc:366
 hmdcwirestat.cc:367
 hmdcwirestat.cc:368
 hmdcwirestat.cc:369
 hmdcwirestat.cc:370
 hmdcwirestat.cc:371
 hmdcwirestat.cc:372
 hmdcwirestat.cc:373
 hmdcwirestat.cc:374
 hmdcwirestat.cc:375
 hmdcwirestat.cc:376
 hmdcwirestat.cc:377
 hmdcwirestat.cc:378
 hmdcwirestat.cc:379
 hmdcwirestat.cc:380
 hmdcwirestat.cc:381
 hmdcwirestat.cc:382
 hmdcwirestat.cc:383
 hmdcwirestat.cc:384
 hmdcwirestat.cc:385
 hmdcwirestat.cc:386
 hmdcwirestat.cc:387
 hmdcwirestat.cc:388
 hmdcwirestat.cc:389
 hmdcwirestat.cc:390
 hmdcwirestat.cc:391
 hmdcwirestat.cc:392
 hmdcwirestat.cc:393
 hmdcwirestat.cc:394
 hmdcwirestat.cc:395
 hmdcwirestat.cc:396
 hmdcwirestat.cc:397
 hmdcwirestat.cc:398
 hmdcwirestat.cc:399
 hmdcwirestat.cc:400
 hmdcwirestat.cc:401
 hmdcwirestat.cc:402
 hmdcwirestat.cc:403
 hmdcwirestat.cc:404
 hmdcwirestat.cc:405
 hmdcwirestat.cc:406
 hmdcwirestat.cc:407
 hmdcwirestat.cc:408
 hmdcwirestat.cc:409
 hmdcwirestat.cc:410
 hmdcwirestat.cc:411
 hmdcwirestat.cc:412
 hmdcwirestat.cc:413
 hmdcwirestat.cc:414
 hmdcwirestat.cc:415
 hmdcwirestat.cc:416
 hmdcwirestat.cc:417
 hmdcwirestat.cc:418
 hmdcwirestat.cc:419
 hmdcwirestat.cc:420
 hmdcwirestat.cc:421
 hmdcwirestat.cc:422
 hmdcwirestat.cc:423
 hmdcwirestat.cc:424
 hmdcwirestat.cc:425
 hmdcwirestat.cc:426
 hmdcwirestat.cc:427
 hmdcwirestat.cc:428
 hmdcwirestat.cc:429
 hmdcwirestat.cc:430
 hmdcwirestat.cc:431
 hmdcwirestat.cc:432
 hmdcwirestat.cc:433
 hmdcwirestat.cc:434
 hmdcwirestat.cc:435
 hmdcwirestat.cc:436
 hmdcwirestat.cc:437
 hmdcwirestat.cc:438
 hmdcwirestat.cc:439
 hmdcwirestat.cc:440
 hmdcwirestat.cc:441
 hmdcwirestat.cc:442
 hmdcwirestat.cc:443
 hmdcwirestat.cc:444
 hmdcwirestat.cc:445
 hmdcwirestat.cc:446
 hmdcwirestat.cc:447
 hmdcwirestat.cc:448
 hmdcwirestat.cc:449
 hmdcwirestat.cc:450
 hmdcwirestat.cc:451
 hmdcwirestat.cc:452
 hmdcwirestat.cc:453
 hmdcwirestat.cc:454
 hmdcwirestat.cc:455
 hmdcwirestat.cc:456
 hmdcwirestat.cc:457
 hmdcwirestat.cc:458
 hmdcwirestat.cc:459
 hmdcwirestat.cc:460