bool l1menu::triggers::SingleIsoTauJet_v0::apply( const l1menu::L1TriggerDPGEvent& event ) const
{
	const L1Analysis::L1AnalysisDataFormat& analysisDataFormat=event.rawEvent();
	const bool* PhysicsBits=event.physicsBits();

	bool raw = PhysicsBits[0];  // ZeroBias
	if (! raw) return false;

	int n1=0;
	int Nj = analysisDataFormat.Njet ;
	for (int ue=0; ue < Nj; ue++) {
		int bx = analysisDataFormat.Bxjet[ue];
		if (bx != 0) continue;
		bool isIsoTauJet = analysisDataFormat.isoTaujet[ue];
		if (! isIsoTauJet) continue;
		float rank = analysisDataFormat.Etjet[ue];    // the rank of the electron
		float pt = rank; //CorrectedL1JetPtByGCTregions(analysisDataFormat.Etajet[ue],rank*4.,theL1JetCorrection);
		float eta = analysisDataFormat.Etajet[ue];
		if (eta < regionCut_ || eta > 21.-regionCut_) continue;  // eta = 5 - 16  // eta = 5 - 16
		if (pt >= threshold1_) n1++;
	}  // end loop over jets

	bool ok = ( n1 >=1 );
	return ok;
}
示例#2
0
bool l1menu::triggers::HTT_v0::apply( const l1menu::L1TriggerDPGEvent& event ) const
{
	const L1Analysis::L1AnalysisDataFormat& analysisDataFormat=event.rawEvent();
	const bool* PhysicsBits=event.physicsBits();

	bool raw = PhysicsBits[0];   // ZeroBias
	if (! raw) return false;

	float adc = analysisDataFormat.HTT ;
	float TheHTT = adc; // / 2. ;

	if (TheHTT < threshold1_) return false;
	return true;
}
bool l1menu::triggers::TkTau_TkMu_v1::apply( const l1menu::L1TriggerDPGEvent& event ) const
{
	const L1Analysis::L1AnalysisDataFormat& analysisDataFormat=event.rawEvent();
	const bool* PhysicsBits=event.physicsBits();

	bool raw=PhysicsBits[0]; // ZeroBias
	if( !raw ) return false;

	bool ok = false;

	int NTktau=analysisDataFormat.NTktau;
	int NTkmu=analysisDataFormat.NTkmu;
	
	for( int itau=0; itau<NTktau; itau++ )
	{
		int bx=analysisDataFormat.BxTktau.at( itau );
		if( bx!=0 ) continue;
		float pt=analysisDataFormat.EtTktau.at( itau );
		float eta = analysisDataFormat.EtaTktau[itau];
		if (eta < leg1regionCut_ || eta > 21.-leg1regionCut_) continue;  // eta = 5 - 16  // eta = 5 - 16

		if( pt>=leg1threshold1_ ) {
		   
		     float tauZvtx = analysisDataFormat.zVtxTktau[itau];

		     for( int imu=0; imu<NTkmu; imu++ )
		     {
		        if(fabs(tauZvtx - analysisDataFormat.zVtxTkmu[imu]) < zVtxCut_)  {
			     int bx2=analysisDataFormat.BxTkmu.at( imu );
			     if( bx2!=0 ) continue;
			     float pt2=analysisDataFormat.PtTkmu.at( imu );
			     float eta2=analysisDataFormat.Etamu.at( imu ); // Commented out to stop unused variable compile warning
			     if (std::fabs(eta2) > etaCut_) continue;
			     int qual=analysisDataFormat.QualTkmu.at( imu );
			     if( qual<muonQuality_ ) continue;
			     

			     if (pt2 >= leg2threshold1_) ok = true;
			 }    
		     }
                } 
		
	}

	
	return ok;
}
示例#4
0
bool l1menu::triggers::TkEM_EG_v0::apply( const l1menu::L1TriggerDPGEvent& event ) const
{
	const L1Analysis::L1AnalysisDataFormat& analysisDataFormat=event.rawEvent();
	const bool* PhysicsBits=event.physicsBits();

	bool raw = PhysicsBits[0];   // ZeroBias
	if (! raw) return false;

	bool ok = false;

	int Neg = analysisDataFormat.Nele;

	int Nem = analysisDataFormat.NTkem;
	for (int ue=0; ue < Nem; ue++) {
		int bx = analysisDataFormat.BxTkem[ue];
		if (bx != 0 ) continue;
		float eta = analysisDataFormat.EtaTkem[ue];
		if (eta < leg1regionCut_ || eta > 21.-leg1regionCut_) continue;  // eta = 5 - 16
		float pt = analysisDataFormat.EtTkem[ue];    // the rank of the electron
		if (pt >= leg1threshold1_){

                        
			for (int uj=0; uj < Neg; uj++) {
				int bxj = analysisDataFormat.Bxel[uj];
				if (bxj != 0) continue;
				float rankj = analysisDataFormat.Etel[uj];
				float ptj = rankj; //CorrectedL1JetPtByGCTregions(analysisDataFormat.Etajet[uj],rank*4.,theL1JetCorrection);

				if (analysisDataFormat.Etael[uj] < leg2regionCut_ || analysisDataFormat.Etael[uj] > 21.-leg2regionCut_) continue;
				if (ptj >= leg2threshold1_ &&
					!(analysisDataFormat.Etael[uj]==analysisDataFormat.EtaTkem[ue] &&
					  analysisDataFormat.Phiel[uj]==analysisDataFormat.PhiTkem[ue]) ) ok = true;
			}

		} // if good TkEle
	}  // end loop over TkEle objects

	return ok;
}
示例#5
0
bool l1menu::triggers::SingleEGEta_v0::apply( const l1menu::L1TriggerDPGEvent& event ) const
{
	const L1Analysis::L1AnalysisDataFormat& analysisDataFormat=event.rawEvent();
	const bool* PhysicsBits=event.physicsBits();

	bool raw = PhysicsBits[0];   // ZeroBias
	if (! raw) return false;

	bool ok=false;
	int Nele = analysisDataFormat.Nele;
	for (int ue=0; ue < Nele; ue++) {
		int bx = analysisDataFormat.Bxel[ue];
		if (bx != 0) continue;
		float eta = analysisDataFormat.Etael[ue];
		if (eta < regionCut_ || eta > 21.-regionCut_) continue;  // eta = 5 - 16
		float rank = analysisDataFormat.Etel[ue];    // the rank of the electron
		float pt = rank ;
		if (pt >= threshold1_) ok = true;
	}  // end loop over EM objects

	return ok;
}
示例#6
0
bool l1menu::triggers::MultiJet_v0::apply( const l1menu::L1TriggerDPGEvent& event ) const
{
	const L1Analysis::L1AnalysisDataFormat& analysisDataFormat=event.rawEvent();
	const bool* PhysicsBits=event.physicsBits();

	bool raw = PhysicsBits[0];   // ZeroBias
	if (! raw) return false;

	int n1=0;
	int n2=0;
	int n3=0;
	int n4=0;

	int Nj = analysisDataFormat.Njet ;
	for (int ue=0; ue < Nj; ue++) {
		int bx = analysisDataFormat.Bxjet[ue];
		if (bx != 0) continue;
		bool isFwdJet = analysisDataFormat.Fwdjet[ue];
		if (isFwdJet) continue;
		bool isTauJet = analysisDataFormat.Taujet[ue];
		if (isTauJet) continue;

		float eta = analysisDataFormat.Etajet[ue];
		if (eta < regionCut_ || eta > 21.-regionCut_) continue;

		float rank = analysisDataFormat.Etjet[ue];
		float pt = rank; //CorrectedL1JetPtByGCTregions(analysisDataFormat.Etajet[ue],rank*4.,theL1JetCorrection);
		if (pt >= threshold1_) n1++;
		if (pt >= threshold2_) n2++;
		if (pt >= threshold3_) n3++;
		if (pt >= threshold4_) n4++;
	}

	bool ok = ( n1 >=1 && n2 >= 2 && n3 >= 3 && n4 >= numberOfJets_);
	return ok;
}