#include "H1HadCheckHighQ2Selector.h" #include "FidVolCut.h" #include "H1Calculator/H1CalcGenericInterface.h" #include "H1Calculator/H1CalcTrig.h" #include "H1Calculator/H1CalcBgTiming.h" ClassImp(H1HadCheckHighQ2Selector) // Authors : David South // Created : 2002/02/17 // Last update: $Date: 2004/01/07 14:42:49 $ (UTC) // by: $Author: southd $ H1HadCheckHighQ2Selector::H1HadCheckHighQ2Selector() { SetCuts(); } H1HadCheckHighQ2Selector::H1HadCheckHighQ2Selector(const char* name) : H1CutSelector(name) { SetCuts(); } H1HadCheckHighQ2Selector::~H1HadCheckHighQ2Selector(){} void H1HadCheckHighQ2Selector::SetCuts() { // Add cuts to the internal H1CutList // This makes use of the Generic access to the H1Calculator using namespace H1CalcGenericInterface; H1Calculator* myCalc = H1Calculator::Instance(); // ---------------------------------------------------- // Trigger Cuts myCalc->Trig()->EnableL4vstTrigger(67); myCalc->Trig()->EnableL4vstTrigger(71); myCalc->Trig()->EnableL4vstTrigger(75); myCalc->Trig()->EnableL4vstTrigger(77); AddRecCut(new H1CutOr(new H1CutBool(Event_IsMC), new H1CutBool(Trig_L4vst)), "Trigger_Cut"); // ---------------------------------------------------- // ---------------------------------------------------- // Background Finders H1Cut* EtaMax = new H1CutFloat(Diff_EtaMax, 3.0, FLT_MAX); H1Cut* PtBal1 = new H1CutFloat(Fs_HadPtElecPtRatio, 0.5, FLT_MAX); H1Cut* PtBal2 = new H1CutFloat(Fs_HadPtElecPtRatio, -FLT_MAX, 2.0); for(Int_t i=0; i<10; i++) { if((i!=0) && (i!=7) && (i!=8) && (i!=9)){ myCalc->BgTiming()->EnableIbgFinder(i); } } for(Int_t i=0; i<19; i++) { if((i!=0) && (i!=6) && (i!=8) && (i!=13) && (i!=14) && (i!=16) && (i!=17)){ myCalc->BgTiming()->EnableIbgfmFinder(i); } } for(Int_t i=0; i<18; i++) { if((i!=1) && (i!=8) && (i!=11) && (12)){ myCalc->BgTiming()->EnableIbgamFinder(i); } } H1Cut* IBG_PtBal1 = new H1CutOr(new H1CutBool(BgTiming_Ibg),PtBal1); H1Cut* IBG_PtBal2 = new H1CutOr(new H1CutBool(BgTiming_Ibg),PtBal2); H1Cut* IBG_EtaMax = new H1CutOr(new H1CutBool(BgTiming_Ibg),EtaMax); H1Cut* IBGFM_PtBal1 = new H1CutOr(new H1CutBool(BgTiming_Ibgfm),PtBal1); H1Cut* IBGFM_PtBal2 = new H1CutOr(new H1CutBool(BgTiming_Ibgfm),PtBal2); H1Cut* IBGFM_EtaMax = new H1CutOr(new H1CutBool(BgTiming_Ibgfm),EtaMax); H1Cut* IBGAM_PtBal1 = new H1CutOr(new H1CutBool(BgTiming_Ibgam),PtBal1); H1Cut* IBGAM_PtBal2 = new H1CutOr(new H1CutBool(BgTiming_Ibgam),PtBal2); H1Cut* IBGAM_EtaMax = new H1CutOr(new H1CutBool(BgTiming_Ibgam),EtaMax); AddRecCut(new H1CutAnd(IBG_PtBal1, IBG_PtBal2, IBG_EtaMax, IBGFM_PtBal1, IBGFM_PtBal2, IBGFM_EtaMax, IBGAM_PtBal1, IBGAM_PtBal2, IBGAM_EtaMax), "BG_Finders"); // ---------------------------------------------------- // ---------------------------------------------------- // High voltage AddRecCut(new H1CutBool(HV_HipSel), "High Voltage"); // ---------------------------------------------------- // ---------------------------------------------------- // CJC T0 H1Cut* CJCTZeroData = new H1CutOr(new H1CutFloat(Diff_EtaMax, 3.0, FLT_MAX), new H1CutDiscreteInt(Vertex_Type, 2), new H1CutBool(Event_IsMC), new H1CutBool(BgTiming_T0CJCDecision)); H1Cut* CJCTZeroMC = new H1CutOr(new H1CutNot(new H1CutBool(Event_IsMC)), new H1CutBool(BgTiming_T0CJCDecision)); AddRecCut(new H1CutAnd(CJCTZeroData, CJCTZeroMC), "CJC TZero"); // ---------------------------------------------------- // ---------------------------------------------------- // Z-impact (cut out 20cm z-crack) AddRecCut(new H1CutOr(new H1CutFloat(Elec_Zimpact, -190.0, 15.0), new H1CutFloat(Elec_Zimpact, 25.0, FLT_MAX)), "Zimpact"); // ---------------------------------------------------- // ---------------------------------------------------- // Phi cracks AddRecCut(new H1CutOr(new H1CutFloat(Elec_PhiOctant, 2.0*TMath::Pi()/180, 43.0*TMath::Pi()/180), new H1CutFloat(Elec_Zimpact, 300.0, FLT_MAX)),"Phi Cracks"); // ---------------------------------------------------- // ---------------------------------------------------- // Compton killer AddRecCut(new H1CutOr(new H1CutInt(Track_NumTracks, 2, INT_MAX), new H1CutLorentz(Had_HadClus,H1CutLorentz::E, 0.1, FLT_MAX), new H1CutFloat(Diff_EtaMax, 3.0, FLT_MAX)), "Compton Killer"); // ---------------------------------------------------- // ---------------------------------------------------- // Lpair killers H1Cut* LPair1 = new H1CutOr(new H1CutLorentz(Had_HadClus, H1CutLorentz::E, 0.1, FLT_MAX), new H1CutFloat(Diff_EtaMax, 3.0, FLT_MAX)); H1Cut* LPair2 = new H1CutOr(new H1CutLorentz(Had_HadClus, H1CutLorentz::E, 0.15, FLT_MAX), new H1CutFloat(Diff_EtaMax, 2.5, FLT_MAX)); H1Cut* LPair3 = new H1CutLorentz(Elec_SecondElectron,H1CutLorentz::Pt,H1Cut::Divide, Elec_FirstElectron, H1CutLorentz::Pt, 0.0, 0.85); H1Cut* LPair4 = new H1CutOr(new H1CutFloat(Elec_TrackClusDistRa_idx, 20.0, FLT_MAX, 1), new H1CutLorentz(Elec_SecondElectron,H1CutLorentz::Pt,H1Cut::Divide, Elec_FirstElectron, H1CutLorentz::Pt, 0.0, 0.9)); H1Cut* LPairTracks = new H1CutInt(Track_NumTracks, 3, INT_MAX); H1Cut* LPairEnergy = new H1CutLorentz(Elec_SecondElectron, H1CutLorentz::E, 0.0, 1.0); AddRecCut(new H1CutOr(LPairEnergy, LPairTracks, LPair1), "Lpair Killer 1"); AddRecCut(new H1CutOr(LPairEnergy, LPairTracks, LPair2), "Lpair Killer 2"); AddRecCut(new H1CutOr(LPairEnergy, LPairTracks, LPair3), "Lpair Killer 3"); AddRecCut(new H1CutOr(LPairEnergy, LPair4), "Lpair Killer 4"); // ---------------------------------------------------- // ---------------------------------------------------- // Low Q2 DIS killer H1Cut* LowE2 = new H1CutLorentz(Elec_SecondElectron,H1CutLorentz::E,H1Cut::Divide, Elec_FirstElectron, H1CutLorentz::E, 0.0, 1.0); H1Cut* Ecra2 = new H1CutNot(new H1CutFloat(Elec_Ecra_idx, 0.1, 4.0, 1)); AddRecCut(new H1CutOr(LowE2, Ecra2), "LowQ2 DIS Killer"); // ---------------------------------------------------- // ---------------------------------------------------- // Q2e AddRecCut(new H1CutFloat(Kine_Q2e, 110.0, FLT_MAX), "Q^2"); // ---------------------------------------------------- // ---------------------------------------------------- // Q2 and Ye cut - effectively Ee > 11 GeV AddRecCut(new H1CutOr(new H1CutFloat(Kine_Ye, 0, 0.63), new H1CutFloat(Kine_Q2e, 890, FLT_MAX)), "Effective Electron Energy"); // ---------------------------------------------------- // ---------------------------------------------------- // Interaction vertex cut H1Cut* Central_Vertex = new H1CutDiscreteInt(Vertex_Type, 1); H1Cut* Forward_Vertex = new H1CutAnd(new H1CutDiscreteInt(Vertex_Type, 2), new H1CutOr(new H1CutFloat(Kine_Q2e, 1000.0, FLT_MAX), new H1CutFloat(Kine_Ye, 0.0, 0.1))); AddRecCut(new H1CutOr(Central_Vertex, Forward_Vertex), "Interaction Vertex"); // ---------------------------------------------------- // ---------------------------------------------------- // Number of electrons AddRecCut(new H1CutInt(Elec_NEmParts, 1, INT_MAX), "Number of Electrons"); // ---------------------------------------------------- // ---------------------------------------------------- // E-Pz AddRecCut(new H1CutFloat(Fs_Empz, 35.0, FLT_MAX), "Empz"); // ---------------------------------------------------- // ---------------------------------------------------- // Track-cluster match H1Cut* DtraTrack = new H1CutFloat(Elec_TrackClusDistRa, 0.0, 12.0); H1Cut* FwdRegion = new H1CutLorentz(Elec_FirstElectron, H1CutLorentz::Theta,-FLT_MAX, 30*TMath::Pi()/180); H1Cut* NVTrack = new H1CutAnd(new H1CutFloat(Elec_TrackClusDistNv, 0.0, 12.0), new H1CutFloat(Elec_TrackVtxDistNv, 0.0, 5.0)); AddRecCut(new H1CutOr(DtraTrack, FwdRegion, NVTrack), "Track Cluster Match"); // ---------------------------------------------------- // ---------------------------------------------------- // Ye AddRecCut(new H1CutFloat(Kine_Ye, 0.0, 0.9), "Ye"); // ---------------------------------------------------- // ---------------------------------------------------- // LAr electron AddRecCut(new H1CutDiscreteInt(Elec_Type, 1), "Electron Type"); // ---------------------------------------------------- // ---------------------------------------------------- // Z-vertex AddRecCut(new H1CutFloat(Vertex_Z, -32.2, 37.8), "Z-Vertex"); // ---------------------------------------------------- // ---------------------------------------------------- // Fiducial Volume AddRecCut(new FidVolCut("FidVolCut"), "Fiducial_Volume"); // ---------------------------------------------------- //AddRecCut(new H1CutDiscreteInt(Elec_NEmParts, 1), "NumElectrons"); //AddRecCut(new H1CutDiscreteInt(Muon_NMuons, 0), "NumMuons"); //AddRecCut(new H1CutFloat(Jet_LowestJetTheta, 7.0*(M_PI/180), FLT_MAX), "LowestJetTheta"); // Turn on debugging //SetDebug(); }