ROOT logo
//*-- AUTHOR : Y.C.Pachmayer
//*-- Modified :
//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////////
//
// HMdcBitFlipCor
// corrects bitflips of a whole mbo
//
///////////////////////////////////////////////////////////////////////////////

using namespace std;
#include "hmdcbitflipcor.h"
#include "TROOT.h"
#include "hmdcdef.h"
#include "hmdcbitflipcorpar.h"
#include "hmdcgeompar.h"
#include "hspecgeompar.h"
#include "hiterator.h"
#include "hcategory.h"
#include "hruntimedb.h"
#include "hmdcdetector.h"
#include "hades.h"
#include "heventheader.h"
#include "hevent.h"
#include "hmdcraweventheader.h"
#include "hmdcraw.h"
#include "hmdcrawcor.h"
#include "hlocation.h"
#include "hspectrometer.h" 
#include "hmatrixcategory.h"

ClassImp(HMdcBitFlipCor)


HMdcBitFlipCor::HMdcBitFlipCor(const Text_t *name,const Text_t *title, Int_t PHist, Int_t PRawCor) : HReconstructor(name,title) {
  initVariables();
  phist=PHist;
  prawcor=PRawCor;
}

HMdcBitFlipCor::HMdcBitFlipCor(void) : HReconstructor("HMdcBitFlipCor","HMdcBitFlipCor") {
  initVariables();
  phist=0;
  prawcor=0;
}

HMdcBitFlipCor::~HMdcBitFlipCor(void){
  if (mdcrawiter) delete mdcrawiter;
}

void HMdcBitFlipCor::setRootOutputFilename(TString name)
{

  if(name.CompareTo("")==0)
    {
      Error("HMdcCosmicsSimul:setRootOutPutFilename()","NO ROOT OUTPUT SPEZIFIED!");
      exit(1);
    }
  else
    {
      rootoutputfilename=name;
    }
}

void HMdcBitFlipCor::setAsciiOutputFilename(TString name)
{

  if(name.CompareTo("")==0)
    {
      Error("HMdcCosmicsSimul:setAsciiOutPutFilename()","NO ASCII OUTPUT SPEZIFIED!");
      exit(1);
    }
  else
    {
      asciioutputfilename=name;
    }
}

void HMdcBitFlipCor::initVariables()
{
  catmHMdcRaw=0;
  mdcraw=0;
  mdcrawiter=0;


  rawREH=0;
  iterREH=0;

  rawcorCat=0;
  rawcor=0;
  loc.set(4,0,0,0,0);

  asciioutputfile=0;
  rootoutputfile=0;

  for(Int_t s=0;s<6;s++)
    {
      for(Int_t m=0; m<4; m++)
	{
	  for(Int_t mbo=0; mbo<16;mbo++)
	    {
	      for(Int_t v=0; v<9;v++)
		{
		  paramsbitcorrection[s][m][mbo][v]=-10;
		}
	    }
	}
    }

  for(Int_t s=0;s<6;s++)
    {
      for(Int_t m=0; m<4; m++)
	{
	  for(Int_t mbo=0; mbo<16; mbo++)
	    {
	      counterevents[s][m][mbo]=0;
	      countersavedtime1[s][m][mbo]=0;
	      countersavedtime2[s][m][mbo]=0;

	      histtime1b[s][m][mbo]=0;
	      histtime1g[s][m][mbo]=0;
	      histtime2b[s][m][mbo]=0;
	      histtime2g[s][m][mbo]=0;
	    }
	}
    }

}

void HMdcBitFlipCor::createHists()
{
  // hists are created

  for(Int_t s=0;s<6;s++)
    {
      for(Int_t m=0; m<4; m++)
	{
	  for(Int_t mbo=0; mbo<16; mbo++)
	    {
	      sprintf(title, "time1 raw before bitshift corrs%im%imbo%i",s,m,mbo);
	      sprintf(name, "time1rawbeforebitcors%im%imbo%i",s,m,mbo);
	      sprintf(xtitle, "time1 [ch]");
	      sprintf(ytitle, "#");
	      histtime1b[s][m][mbo] = new TH1F(name, title, 1024, 0, 2048);
	      histtime1b[s][m][mbo] -> SetXTitle(xtitle);
	      histtime1b[s][m][mbo] -> SetYTitle(ytitle);
	      
	      sprintf(title, "time1 raw after bitshift corrs%im%imbo%i",s,m,mbo);
	      sprintf(name, "time1rawafterbitcors%im%imbo%i",s,m,mbo);
	      sprintf(xtitle, "time1 [ch]");
	      sprintf(ytitle, "#");
	      histtime1g[s][m][mbo] = new TH1F(name, title, 1024, 0, 2048);
	      histtime1g[s][m][mbo] -> SetXTitle(xtitle);
	      histtime1g[s][m][mbo] -> SetYTitle(ytitle);
	      
	      
	      sprintf(title, "time2 raw before bitshift corrs%im%imbo%i",s,m,mbo);
	      sprintf(name, "time2rawbeforebitcors%im%imbo%i",s,m,mbo);
	      sprintf(xtitle, "time2 [ch]");
	      sprintf(ytitle, "#");
	      histtime2b[s][m][mbo] = new TH1F(name, title, 1024, 0, 2048);
	      histtime2b[s][m][mbo] -> SetXTitle(xtitle);
	      histtime2b[s][m][mbo] -> SetYTitle(ytitle);
	      
	      sprintf(title, "time2 raw after bitshift corrs%im%imbo%i",s,m,mbo);
	      sprintf(name, "time2rawafterbitcors%im%imbo%i",s,m,mbo);
	      sprintf(xtitle, "time2 [ch]");
	      sprintf(ytitle, "#");
	      histtime2g[s][m][mbo] = new TH1F(name, title, 1024, 0, 2048);
	      histtime2g[s][m][mbo] -> SetXTitle(xtitle);
	      histtime2g[s][m][mbo] -> SetYTitle(ytitle);
	      
	    }
	}
    }
  
 

}

Bool_t HMdcBitFlipCor::init(void) {
  
  rtdb=gHades->getRuntimeDb();

  catmHMdcRaw=gHades->getCurrentEvent()->getCategory(catMdcRaw);
  if (!catmHMdcRaw) {
    Error("HMdcBitFlipCor::init()","NO HMDCRAW FOUND!");
    return kFALSE;
  }
  mdcrawiter=(HIterator *)catmHMdcRaw->MakeIterator();
  if(!mdcrawiter)
    {
      return kFALSE;
    }

  catmHMdcRawEventHeader=gHades->getCurrentEvent()->getCategory(catMdcRawEventHeader);
  if (!catmHMdcRawEventHeader) {
    Error("HMdcBitFlipCor::init()","NO HMDCRAW FOUND!");
    return kFALSE;
  }
  iterREH=(HIterator *)catmHMdcRawEventHeader->MakeIterator();
  if(!iterREH)
    {
      return kFALSE;
    }

  if(phist==1)
    {
      createHists();
    }

  getParameterContainers();

 if(prawcor==1)
   {
     rawcorCat=(HCategory*)((HMdcDetector*)(((HSpectrometer*)(gHades->getSetup()))->getDetector("Mdc"))->buildCategory(catMdcRawCor));   
     if (!rawcorCat) return kFALSE;
     else ((HEvent*)(gHades->getCurrentEvent()))->addCategory(catMdcRawCor,rawcorCat,"Mdc");
   }
     

  return kTRUE;

}

void HMdcBitFlipCor::getParameterContainers()
{
  fMdcBitFlipCorPar=(HMdcBitFlipCorPar*)rtdb->getContainer("MdcBitFlipCorPar");  
  if(!fMdcBitFlipCorPar)
    {
      Error("HMdcBitFlipCorPar:getParameterContainer()","ZERO POINTER FOR HMDCBITFLIPCORPAR RECIEVED!");
      exit(1);
    }
}

Bool_t HMdcBitFlipCor::reinit(void) {
  fparamsbitcorrection();
  
  return kTRUE;
}

Bool_t  HMdcBitFlipCor::fparamsbitcorrection()
{
  if(fMdcBitFlipCorPar==0){printf("Error fMdcBitFlipCorPar ... not found \n");}
  for(Int_t s=0;s<6;s++)
    {
      for(Int_t m=0; m<4; m++)
	{
	  for(Int_t mbo=0; mbo<16;mbo++)
	    {
	      for(Int_t v=0; v<9;v++)
		{
		  paramsbitcorrection[s][m][mbo][v]=fMdcBitFlipCorPar->getBitFlipCorParameter(s,m,mbo,v);
		}
	    }
	}
    }
  //fMdcBitFlipCorPar->printParam();
  return kTRUE;
     
}

Int_t HMdcBitFlipCor::execute(void) {

  resetVar();
  iterREH->Reset();
  while ( (rawREH=(HMdcRawEventHeader *)iterREH->Next()) != 0 ){ 
    trigtype=rawREH->getTriggerType();
  }

  mdcrawiter->Reset();
  while ( (mdcraw=(HMdcRaw *)mdcrawiter->Next()) != 0 )
    {
      if(trigtype!=9)
	{
	  mdcraw->getAddress(sector, module, mbo, tdc);
	 
	  loc[0]=sector;
	  loc[1]=module;
	  loc[2]=mbo;
	  loc[3]=tdc;

	  if(prawcor==1)
	    {
	      rawcor=(HMdcRawCor *)rawcorCat->getSlot(loc);
	      rawcor=new(rawcor)HMdcRawCor;
	      rawcor->setAddress(sector, module, mbo, tdc);
	    }

	  time1=mdcraw->getTime(1);
	  time2=mdcraw->getTime(2);
	  if(paramsbitcorrection[sector][module][mbo][0]>0)
	    {  
	      counterevents[sector][module][mbo]++;
	      if(phist==1)
		{
		  histtime1b[sector][module][mbo]->Fill(time1);
		  histtime2b[sector][module][mbo]->Fill(time2);
		}
	      
	      if(time1>paramsbitcorrection[sector][module][mbo][2])
		{
		  if(prawcor==1)
		    {
		      rawcor->setTimeShift(paramsbitcorrection[sector][module][mbo][4],1);
		      rawcor->setFlagRaw(1);
		    }
		  mdcraw->setTimeNew(time1+paramsbitcorrection[sector][module][mbo][4],1);
		  if(phist==1)
		    {
		      histtime1g[sector][module][mbo]->Fill(time1+paramsbitcorrection[sector][module][mbo][4]);
		    }
		  countersavedtime1[sector][module][mbo]++;
		}
	      else
		{
		  if(time1<paramsbitcorrection[sector][module][mbo][1])
		    {
		      if(prawcor==1)
			{
			  rawcor->setTimeShift(paramsbitcorrection[sector][module][mbo][3],1);
			  rawcor->setFlagRaw(1);
			}
		      mdcraw->setTimeNew(time1+paramsbitcorrection[sector][module][mbo][3],1);
		      if(phist==1)
			{
			  histtime1g[sector][module][mbo]->Fill(time1+paramsbitcorrection[sector][module][mbo][3]);
			}
		      countersavedtime1[sector][module][mbo]++;
		    }
		  else
		    {
		       if(prawcor==1)
			 {
			   rawcor->setTimeShift(0,1);
			   rawcor->setFlagRaw(0);
			 }
		      if(phist==1)
			{
			  histtime1g[sector][module][mbo]->Fill(time1);
			}
		    }
		}
	      
	       
	      if(time2>paramsbitcorrection[sector][module][mbo][6])
		{
		   if(prawcor==1)
		    {
		      rawcor->setTimeShift(paramsbitcorrection[sector][module][mbo][8],2);
		      if(rawcor->getFlagRaw()>-1)
			{
			  rawcor->setFlagRaw(3);
			}
		      else
			{
			  rawcor->setFlagRaw(2);
			}
		    }
		  mdcraw->setTimeNew(time2+paramsbitcorrection[sector][module][mbo][8],2);

		  if(phist==1)
		    {
		      histtime2g[sector][module][mbo]->Fill(time2+paramsbitcorrection[sector][module][mbo][8]);
		    }
		  countersavedtime2[sector][module][mbo]++;
		}
	      else
		{
		  if(time2<paramsbitcorrection[sector][module][mbo][5])
		    {
		       if(prawcor==1)
			 {
			   rawcor->setTimeShift(paramsbitcorrection[sector][module][mbo][7],2);
			   if(rawcor->getFlagRaw()>-1)
			     {
			       rawcor->setFlagRaw(3);
			     }
			   else
			     {
			       rawcor->setFlagRaw(2);
			     }
			 }
		      mdcraw->setTimeNew(time2+paramsbitcorrection[sector][module][mbo][7],2);
		      if(phist==1)
			{
			  histtime2g[sector][module][mbo]->Fill(time2+paramsbitcorrection[sector][module][mbo][7]);
			}
		      countersavedtime2[sector][module][mbo]++;
		    }
		  else
		    {
		       if(prawcor==1)
			 {
			   rawcor->setTimeShift(0,2);
			   rawcor->setFlagRaw(0);
			 }
		      if(phist==1)
			{
			  histtime2g[sector][module][mbo]->Fill(time2);
			}
		    }
		}
	    }
	  else
	    {
	       if(prawcor==1)
		    {
		      rawcor->setFlagRaw(0);
		      rawcor->setTimeShift(0,1);
		      rawcor->setTimeShift(0,2);
		    }
	    }
	  
	}
    }

  return 0;
  
}


Bool_t HMdcBitFlipCor::finalize(void) {
  if(phist==1)
    {
      asciioutputfile = fopen(asciioutputfilename.Data(),"w");
    }
     
  for(Int_t s=0;s<6;s++)
    {
      for(Int_t m=0; m<4; m++)
	{
	  for(Int_t mbo=0; mbo<16; mbo++)
	    {
	      if(counterevents[s][m][mbo]!=0)
		{
		  cout << " sector " << s << " module " << m << " mbo " << mbo << endl;
		  cout << " number of events " << counterevents[s][m][mbo] << endl;
		  cout << " number of events which were rescued due to time1 correction " << countersavedtime1[s][m][mbo] << endl;
		  cout << " number of events which were rescued due to time2 correction " << countersavedtime2[s][m][mbo] << endl;
		  Float_t savedevents1=(Float_t) countersavedtime1[s][m][mbo]/counterevents[s][m][mbo];
		  Float_t savedevents2=(Float_t) countersavedtime2[s][m][mbo]/counterevents[s][m][mbo];
		  cout << " % of rescued time1 events " << savedevents1*100  << endl;
		  cout << " % of rescued time2 events " << savedevents2*100  << endl;
	
		  if(phist==1)
		    {
		      fprintf(asciioutputfile,"%s%i%s%i%s%i%s%i%s%i%s%i\n","sector ",s," module ",m," mbo ", mbo," no of events " , counterevents[s][m][mbo], " saved time1 " , countersavedtime1[s][m][mbo], " saved time2 ", countersavedtime2[s][m][mbo]);
		    }
		}
	    }
	}
    }

  if(phist==1)
    {
      fclose(asciioutputfile);
      
      
      
      rootoutputfile=new TFile(rootoutputfilename.Data(),"RECREATE");
      rootoutputfile->cd();


      for(Int_t s=0;s<6;s++)
	{
	  for(Int_t m=0; m<4; m++)
	    {
	      for(Int_t mbo=0; mbo<16; mbo++)
		{
		  if((histtime1b[s][m][mbo]->GetEntries())>0)
		    {
		      histtime1b[s][m][mbo]->Write();
		    }
		  if(histtime1g[s][m][mbo]->GetEntries()>0)
		    {
		      histtime1g[s][m][mbo]->Write();
		    }
		  if(histtime2b[s][m][mbo]->GetEntries()>0)
		    {
		      histtime2b[s][m][mbo]->Write();
		    }
		  if(histtime2g[s][m][mbo]->GetEntries()>0)
		    {
		      histtime2g[s][m][mbo]->Write();
		    }
		}
	    }
	}
      
      rootoutputfile->Save();
      rootoutputfile->Close();
    }

  return kTRUE;

}


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