ROOT logo
// $Id: htimelvl1evtfilter.cc,v 1.4 2009-07-15 11:35:01 halo Exp $
// Last update by Filip Krizek: 24/11/06 
//
using namespace std;
#include "htimelvl1evtfilter.h"

#include "hades.h"
#include "hcategory.h"
#include "hevent.h"
#include "hiterator.h"
#include "hlinearcategory.h"
#include "hmatrixcategory.h"
#include "htofhitsim.h"
#include "tofdef.h"

#include "TRandom.h"

#include <iostream>
#include <iomanip>

ClassImp(HTimeLvl1EvtFilter)

    HTimeLvl1EvtFilter::HTimeLvl1EvtFilter(const Text_t *name,const Text_t *title,TString opt,Int_t m,Float_t timecut, Float_t MultSmearing) :
HReconstructor(name,title)
{
    filterOption=opt;
    nMult=m;
    fTimeCut=timecut;
    fMultSmearing=MultSmearing;
    fTofHits=NULL;
    fTofIter=NULL;
}


HTimeLvl1EvtFilter::~HTimeLvl1EvtFilter(void) {

}

Bool_t HTimeLvl1EvtFilter::init() {
    if (gHades) {
	HEvent *event=gHades->getCurrentEvent();
	if (event) {

	    if (filterOption.Contains("tofmult"))
	    {
		fTofHits=event->getCategory(catTofHit);
		if (!fTofHits) {
		    Error("init","No TOF input");
		    return kFALSE;
		}
		fTofIter=(HIterator *)fTofHits->MakeIterator();
	    }

	}

    }

    resetCounters();
    return kTRUE;
}

Bool_t HTimeLvl1EvtFilter::finalize() {
    cout<<"Number of rejected evts: "<<nCounterNbRejectedEvts<<endl;
    cout<<"Number of remaining evts: "<<nCntProcessedEvents-nCounterNbRejectedEvts<<endl;
    cout<<"Percentage of rejected evts: "<<(((Float_t)nCounterNbRejectedEvts)/((Float_t)nCntProcessedEvents))*100<<"%"<<endl;
    return kTRUE;
}

Int_t HTimeLvl1EvtFilter::execute()
{
    // refer to isFilteredEvt(swt) for filter options
    nCntProcessedEvents++;

    Int_t kReturnValue=0;

    if (isFilteredEvt(filterOption))
    {
	nCounterNbRejectedEvts++;
	kReturnValue = kSkipEvent;
    }
    else if (isSkipNextTask(0)) kReturnValue = 1;


    return kReturnValue;
}

void HTimeLvl1EvtFilter::resetCounters()
{
    nCntProcessedEvents=0;
    nCounterNbRejectedEvts=0;
}

Bool_t HTimeLvl1EvtFilter::isFilteredEvt(TString opt)
{

    // if function returns kTRUE evt is skipped
    Bool_t kSwitch=kFALSE;

    if (opt.Contains("tofmult"))
    {
	if (!isTofMultTrigger()) kSwitch=kTRUE;
    }

    return kSwitch;
}

Bool_t HTimeLvl1EvtFilter::isSkipNextTask(Int_t swt)
{
    Bool_t kSwitch=kFALSE;

    switch (swt)
    {
    case 0:

	break;

    default:
	kSwitch=kFALSE;

    }
    return kSwitch;
}




Bool_t HTimeLvl1EvtFilter::isTofMultTrigger()
{


    Bool_t r=kFALSE;

    if(!fTofIter) return r;


    Int_t nTH=0;
    Float_t tof;
    Float_t random_mult; //should include effects of electronics

    HTofHit *pTof = 0;

    fTofIter->Reset();
    while((pTof = (HTofHit *)fTofIter->Next()))
    {
	tof=pTof->getTof();
	if(tof < fTimeCut) nTH++;
    }

    random_mult=gRandom->Gaus(0,fMultSmearing);
    //    cout<<"TOF Mult: "<<nTH<<"   and Tofino Mult: "<<nTiH<<endl;
    if ((nTH) >= (nMult+random_mult)){
	r=kTRUE;
    }
    return r;
}



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