ROOT logo
//*-- AUTHOR : Y.C.Pachmayer
//*-- Modified :
//_HADES_CLASS_DESCRIPTION 
///////////////////////////////////////////////////////////////////////////////
//
// HMdcPPEvtFilter
//
//  pp elastic events will be selected  
//  all other events will be skipt.
//  selection criteria:
//  1. Trig Bit - only opposite sector triggered events
//  2. Multiplicity>=2
//  3. fabs((phi[i]-phi[j])-phimean) < phiwidth
//  4. fabs(tantheta[i]*tantheta[j]) < tanthetawidth
//
//
//  input level:
//  default is mdccluster level
//
//  if you want to have mdcseg level as input put flagcat in constructor !=0
//
///////////////////////////////////////////////////////////////////////////////

using namespace std;
#include "hmdcppevtfilter.h"
#include "TH1.h"
#include "TF1.h"
#include "TROOT.h"
#include "TCanvas.h"
#include "hmdcdef.h"
#include "hmdctrackddef.h"

ClassImp(HMdcPPEvtFilter)


HMdcPPEvtFilter::HMdcPPEvtFilter(const Text_t *name,const Text_t *title, Int_t flagcat) : HReconstructor(name,title) {
  flagcategory=flagcat;
  initVariables();
}

HMdcPPEvtFilter::HMdcPPEvtFilter(void) : HReconstructor("HMdcPPEvtFilter","HMdcPPEvtFilter"){
	flagcategory=0;
	initVariables();
}

HMdcPPEvtFilter::~HMdcPPEvtFilter(void){
  if (mdcsegiter) delete mdcsegiter;
  if (mdcclusiter) delete mdcclusiter;
}

void HMdcPPEvtFilter::initVariables()
{
  catmHMdcClus=0;
  mdcclus=0;
  mdcclusiter=0;
  
  catmHMdcSeg=0;
  mdcseg=0;
  mdcsegiter=0;

  histphidiff=0;
  histtanthetamult=0;
  histphidiffcut=0;
  histtanthetamultcut=0;
  histchiphi=0;
  histchiphicut=0;
  histchitheta=0;
  histchithetacut=0;

  // default values for phimean, tanthetamean and the corresponding width
  phimean=180;
  tanthetamean=0.65;
  phiwidth=20;  
  tanthetawidth=0.15;

  setHistFile(".","pphs_","NEW");
  saveHist=saveCanv=savePSFile=kTRUE;
}

void HMdcPPEvtFilter::createHists()
{
  // hists are created
  
  sprintf(title, "phi difference");
  sprintf(name, "phidifference");
  sprintf(xtitle, "phi diff");
  sprintf(ytitle, "#");
  histphidiff = new TH1F(name, title, 720, 0, 360);
  histphidiff -> SetXTitle(xtitle);
  histphidiff -> SetYTitle(ytitle);

  sprintf(title, "tantheta_tantheta");
  sprintf(name, "tantheta_tantheta");
  sprintf(xtitle, "tantheta_tantheta");
  sprintf(ytitle, "#");
  histtanthetamult = new TH1F(name, title, 100, 0.0, 1.0);
  histtanthetamult -> SetXTitle(xtitle);
  histtanthetamult -> SetYTitle(ytitle);

  sprintf(title, "phi difference after cut");
  sprintf(name, "phidifferenceaftercut");
  sprintf(xtitle, "phi diff after cut");
  sprintf(ytitle, "#");
  histphidiffcut = new TH1F(name, title, 720, 0, 360);
  histphidiffcut -> SetXTitle(xtitle);
  histphidiffcut -> SetYTitle(ytitle);

  sprintf(title, "tantheta_tantheta after cut");
  sprintf(name, "tantheta_tanthetaaftercut");
  sprintf(xtitle, "tantheta_tantheta after cut");
  sprintf(ytitle, "#");
  histtanthetamultcut = new TH1F(name, title, 100, 0.0, 1.0);
  histtanthetamultcut -> SetXTitle(xtitle);
  histtanthetamultcut -> SetYTitle(ytitle);
  if(flagcategory!=0)
    {
      sprintf(title, "chi2 vs phi");
      sprintf(name, "chi2vsphi");
      sprintf(xtitle, "phi");
      sprintf(ytitle, "chi2");
      histchiphi = new TH2F(name, title, 360, 0, 360, 620, -10, 300);
      histchiphi -> SetXTitle(xtitle);
      histchiphi -> SetYTitle(ytitle);
      
      sprintf(title, "chi2 vs phi after cut");
      sprintf(name, "chi2vsphiaftercut");
      sprintf(xtitle, "phi");
      sprintf(ytitle, "chi2");
      histchiphicut = new TH2F(name, title, 360, 0, 360, 620, -10, 300);
      histchiphicut -> SetXTitle(xtitle);
      histchiphicut -> SetYTitle(ytitle);
      
      sprintf(title, "chi2 vs theta");
      sprintf(name, "chi2vstheta");
      sprintf(xtitle, "theta");
      sprintf(ytitle, "chi2");
      histchitheta = new TH2F(name, title, 540, 0, 540, 620, -10, 300);
      histchitheta -> SetXTitle(xtitle);
      histchitheta -> SetYTitle(ytitle);
      
      sprintf(title, "chi2 vs theta after cut");
      sprintf(name, "chi2vsthetaaftercut");
      sprintf(xtitle, "theta");
      sprintf(ytitle, "chi2");
      histchithetacut = new TH2F(name, title, 540, 0, 540, 620, -10, 300);
      histchithetacut -> SetXTitle(xtitle);
      histchithetacut -> SetYTitle(ytitle);
    }
  
}

void HMdcPPEvtFilter::setThetaCuts(Float_t Theta, Float_t DTheta) {
  // this function sets the mean for tantheta[i]*tantheta[j] and its width 
  tanthetamean=Theta;
  tanthetawidth=DTheta;
}

void HMdcPPEvtFilter::setPhiCuts(Float_t Phi, Float_t DPhi) {
 // this function sets the mean for phi[i]-phi[j] and its width 
  phimean=Phi;
  phiwidth=DPhi;
}

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


 if(flagcategory==0)
    {
      catmHMdcClus=gHades->getCurrentEvent()->getCategory(catMdcClus);
      if (!catmHMdcClus) {
	Error("HMdcPPEvtFilterClusLevel::init()","NO HMDCCLUS FOUND!");
	return kFALSE;
      }
      mdcclusiter=(HIterator *)catmHMdcClus->MakeIterator();
      if(!mdcclusiter)
	{
	  return kFALSE;
	}
    }
 
 else
   {
     catmHMdcSeg=gHades->getCurrentEvent()->getCategory(catMdcSeg);
     if (!catmHMdcSeg) {
       Error("HMdcPPEvtFilter::init()","NO HMDCSEG FOUND!");
       return kFALSE;
     }
  mdcsegiter=(HIterator *)catmHMdcSeg->MakeIterator();
  if(!mdcsegiter)
    {
      return kFALSE;
    }
   }

  createHists();

  return kTRUE;

}

Bool_t HMdcPPEvtFilter::reinit(void) {
  return kTRUE;
}


Int_t HMdcPPEvtFilter::execute(void) {
 
  // done for testing
  //  Int_t nEvtId       = 0; //Evt Id
  //   Int_t nEvt         = 0; //
  //   nEvtId = gHades->getCurrentEvent()->getHeader()->getId();
  //   nEvt=gHades->getCurrentEvent()->getHeader()->getEventSeqNumber();
  //   // if(nEvt==10)
  //   if(TMath::Even(nEvt))
  //     { return 0;}
  //   else
  //     {return kSkipEvent;}  // kSkipEvent=-9
  // end testing


  resetCounters();
  resetArrays();
  IsElasticFlag=0;
  phishift[0]=0;
  phishift[1]=60;
  phishift[2]=120;
  phishift[3]=180;
  phishift[4]=240;
  phishift[5]=-60;

  TrigBit=gHades->getCurrentEvent()->getHeader()->getTBit();

  if((TrigBit & (1<<5)) == 0) 
    { 
      return  kSkipEvent;  
    }
  else
      {
	if(flagcategory==0)
	  {
	    mdcclusiter->Reset();
	    while ( (mdcclus=(HMdcClus *)mdcclusiter->Next()) != 0 )
	      {
		if((mdcclus->getMod()<2)&&(mdcclus->getMod()>-1))
		  { 	    
		    if(multiplicity > 200){
		      return  kSkipEvent;
		    }
		    sector[multiplicity]=mdcclus->getSec();
		    phi[multiplicity]=TMath::RadToDeg()*(mdcclus->getPhi())+phishift[(sector[multiplicity])];
		    theta[multiplicity]=TMath::RadToDeg()*(mdcclus->getTheta()); 

		    multiplicity++;
		  }	      
	      }
	  }
	else
	  {
	    mdcsegiter->Reset();
	    while ( (mdcseg=(HMdcSeg *)mdcsegiter->Next()) != 0 )
	      {
		if((mdcseg->getIOSeg())==0)
		  {
		    if(multiplicity > 200){
		      return  kSkipEvent;
		    }
		    sector[multiplicity]=mdcseg->getSec();
		    phi[multiplicity]=TMath::RadToDeg()*(mdcseg->getPhi())+phishift[(sector[multiplicity])];
		    theta[multiplicity]=TMath::RadToDeg()*(mdcseg->getTheta()); 
		    chi2[multiplicity]=mdcseg->getChi2();
		    histchiphi->Fill(phi[multiplicity],chi2[multiplicity]);
		    histchitheta->Fill((theta[multiplicity]+(sector[multiplicity])*90),chi2[multiplicity]);
		    multiplicity++;
		  }
	      }
	  }

	
	if(multiplicity>=2)
	  {
	    for(Int_t i=0; i<multiplicity; i++)
	      {
		for(Int_t j=(i+1); j<multiplicity; j++)
		  {
		    phidiff=fabs(phi[j]-phi[i]);
		    tanthetamult=(TMath::Tan(TMath::DegToRad()*theta[j]))*(TMath::Tan(TMath::DegToRad()*theta[i]));
		    histphidiff->Fill(phidiff);
		    histtanthetamult->Fill(tanthetamult);
		    if((fabs(phidiff-phimean)<phiwidth)&&(fabs(tanthetamult-tanthetamean)<tanthetawidth))
		      {
			histphidiffcut->Fill(phidiff);
			histtanthetamultcut->Fill(tanthetamult);
			if(flagcategory!=0)
			  {
			    histchiphicut->Fill(phi[i],chi2[i]);
			    histchiphicut->Fill(phi[j],chi2[j]);
			    histchithetacut->Fill((theta[i]+(sector[i])*90),chi2[i]);
			    histchithetacut->Fill((theta[j]+(sector[j])*90),chi2[j]);
			  }
			IsElasticFlag=1;
		      }
		  }
	      }
	  }

	if((multiplicity<2) || (IsElasticFlag==0))
	  {
	    return  kSkipEvent;
	  }
      }

  return 0;

}


void HMdcPPEvtFilter::setHistFile(const Char_t* dir,const Char_t* suf,const Char_t* option) {
  // the hist output file is set
    TString tmp=dir;
    if(tmp.Length()>0) {
	histFileDir=dir;
	if(histFileDir.Length()>0 && histFileDir(histFileDir.Length()-1)!='/')
	    histFileDir+='/';
    }
    tmp=suf;
    if(tmp.Length()>0) histFileSuffix=suf;
    tmp=option;
    if(tmp.Length()>0) histFileOption=option;
}


Bool_t HMdcPPEvtFilter::finalize(void) {

 canv1 = new TCanvas("canv1","Phi and Theta",140,60,800,900);
 canv1->Divide(1,2);
 canv1->cd(1);
 histphidiff->DrawCopy();
 canv1->cd(2);
 histtanthetamult->DrawCopy();  
 canv1->Update();

 canv2 = new TCanvas("canv2","Phi and Theta after Cut",140,60,800,900);
 canv2->Divide(1,2);
 canv2->cd(1);
 histphidiffcut->DrawCopy();
 canv2->cd(2);
 histtanthetamultcut->DrawCopy();  
 canv2->Update();

 if(flagcategory!=0)
   {
     canv3 = new TCanvas("canv3","Chi2 vs Phi and Theta",140,60,800,900);
     canv3->Divide(2,2);
     canv3->cd(1);
     histchiphi->DrawCopy("colz");
     canv3->cd(2);
     histchiphicut->DrawCopy("colz");  
     canv3->cd(3);
     histchitheta->DrawCopy("colz");
     canv3->cd(4);
     histchithetacut->DrawCopy("colz");
     canv3->Update();
   }

 // writing hists to root file
 Bool_t fitFlag=kTRUE;
 const Char_t* flag=(fitFlag) ? "":"x_";
 TFile* file=0;
 if(saveHist || saveCanv) file=openHistFile(flag);
 if(file) {
   if(saveHist) {
     if(histphidiff) histphidiff->Write();
     if(histtanthetamult) histtanthetamult->Write();
     if(histphidiffcut) histphidiffcut->Write();
     if(histtanthetamultcut) histtanthetamultcut->Write();
     if(flagcategory!=0)
       {
	 if(histchiphi) histchiphi->Write();
	 if(histchitheta) histchitheta->Write();
	 if(histchiphicut) histchiphicut->Write();
	 if(histchithetacut) histchithetacut->Write();
       }
   }
   if(saveCanv) {
     canv1->Write();
     canv2->Write();
     if(flagcategory!=0)
       {
	 canv3->Write();
       }
   }
   
   file->Close();
   delete file;
 }
 
 // writing hists to ps-file
 if(savePSFile) {
   TString tPsFile=psFile+"(";
   canv1->Print(tPsFile.Data());
   tPsFile=psFile+")";
   canv2->Print(tPsFile.Data());
 }


 return kTRUE;

}


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