Beispiel #1
0
int DYAnalysis::analyzeMM(Event *e, string systname)
{
    string label = GetLabel(e);
    cut.reset();
    cut.SetMask(MaxCut-1) ;
    cut.SetCutBit( Total ) ;

    Lepton*mu0 = e->GetMuon(0);
    Lepton*mu1 = e->GetMuon(1);
    Jet *j0 = e->GetJet(0);
    Jet *j1 = e->GetJet(1);

    // Truth
    GenParticle *genmu0=NULL; GenParticle *genmu1=NULL;

    for( int iGen=0 ; /*empty*/ ; ++iGen)
    {
        GenParticle *g = e->GetGenParticle(iGen); 
        if (g==NULL ) break;  // end loop statement
        if (not g->IsDressed()) continue;
        if (not abs(g->GetPdgId())==13) continue;
        
        if (genmu0== NULL) genmu0=g;
        else if (genmu1==NULL) {genmu1=g; break;}
    }

    bool genMuons = genmu0!=NULL and genmu1 !=NULL;

    bool isGen=false;
    bool isReco=false;
    if (genMuons) // no requirement on pT
    {
        Object Ztruth(*genmu0); 
        Ztruth += *genmu1;
        if (Ztruth.M() > 60 and Ztruth.M()<120) isGen=true;
    }

    bool recoMuons= mu0 != NULL and mu1 !=NULL; 
    //if (not recoMuons) return 0;

    if (mu0!=NULL and mu0->Pt() > 25 and fabs(mu0->Eta())< 2.4) 
    {
        if (e->IsTriggered("HLT_IsoMu20") ) {
            Fill("DYAnalysis/Vars/MuonIso_"+ label,systname, mu0->Isolation(),e->weight()) ;
        }
    }

    if (recoMuons and mu1->Pt() >20)
    { // ------------------- 20 -------------------
        Object Z(*mu0);
        Z += *mu1;
        if (Z.M()> 60 && Z.M()<120){
            Fill("DYAnalysis/Vars/Pt20mm_"+ label,systname, Z.Pt(),e->weight()) ;
        }
    
    }

    // ---------------------- 25 -------------------
    if ( recoMuons and mu1->Pt() >25)
    {
        cut.SetCutBit(Leptons);
        if (e->IsTriggered("HLT_IsoMu20") ) cut.SetCutBit(Trigger);

        Object Z(*mu0);
        Z += *mu1;
       	if (cut.passAllUpTo(Trigger) ){
            Fill("DYAnalysis/Vars/Mmm_"+ label,systname, Z.M(),e->weight()) ;
        }

        if (Z.M()> 60 && Z.M()<120) cut.SetCutBit(Mass);

       	if (cut.passAll() ){
            Fill("DYAnalysis/Vars/Ptmm_"+ label,systname, Z.Pt(),e->weight()) ;
            Fill("DYAnalysis/Vars/EtaMu1_"+ label,systname, mu0->Eta(),e->weight()) ;
       	    Fill("DYAnalysis/Vars/Npvmm_"+ label,systname, e->Npv(),e->weight()) ;
            Fill("DYAnalysis/Vars/NJmm_"+ label,systname, e->NcentralJets(),e->weight()) ;
            Fill("DYAnalysis/Vars/PtmmUW_"+ label,systname, Z.Pt(),1.0) ;
            isReco=true;
        }

        if ( Z.Pt() > 500) // NoSingleMuon Trigger -> ISO
        {
            Fill( "DYAnalysis/Vars/MHighPtmm_" + label,systname,Z.M() ,e->weight() ) ;
            if( j1 != NULL ) Fill( "DYAnalysis/Vars/MJHighPtmm_" + label,systname, j1->InvMass(j0) ,e->weight() ) ;
        }

        if(mu0->DeltaR(mu1) <.8) {
	        Fill ("DYAnalysis/Vars/MCloseMt_"+ label , systname, ChargedHiggs::mt(Z.GetP4(), e->GetMet().GetP4()) , e->weight());
	        if (j0!=NULL)Fill ("DYAnalysis/Vars/MCloseJZ_"+ label,systname,j0->InvMass(&Z)  , e->weight());
        }
    }

    if (isReco and isGen) Fill("DYAnalysis/Vars/Accmm_"+label,systname, 0);
    else if ( isGen ) Fill("DYAnalysis/Vars/Accmm_"+label,systname, 1);
    else if ( isReco ) Fill("DYAnalysis/Vars/Accmm_"+label,systname, 2); 
    return 0;
}
Beispiel #2
0
int DYAnalysis::analyzeEE(Event *e, string systname)
{
    string label = GetLabel(e);
    cut.reset();
    cut.SetMask(MaxCut-1) ;
    cut.SetCutBit( Total ) ;

    if (e->weight() == 0.) Log(__FUNCTION__,"WARNING","Event Weight is NULL");

    Lepton*e0 = e->GetElectron(0);
    Lepton*e1 = e->GetElectron(1);
    Jet *j0 = e->GetJet(0);
    Jet *j1 = e->GetJet(1);

    bool recoEles = e0 !=NULL and e1 !=NULL;
    //if (e0 == NULL or e1 == NULL) return 0;

    GenParticle *genele0=NULL; GenParticle *genele1=NULL;

    for( int iGen=0 ; /*empty*/ ; ++iGen)
    {
        GenParticle *g = e->GetGenParticle(iGen); 
        if (g==NULL ) break;  // end loop statement
        if (not g->IsDressed()) continue;
        if (not abs(g->GetPdgId())==11) continue;
        
        if (genele0== NULL) genele0=g;
        else if (genele1==NULL) {genele1=g; break;}
    }

    bool genEles = genele0!=NULL and genele1 !=NULL;

    bool isGen=false;
    bool isReco=false;
    if (genEles) // no requirement on pT
    {
        Object Ztruth(*genele0); 
        Ztruth += *genele1;
        if (Ztruth.M() > 60 and Ztruth.M()<120) isGen=true;
    }

    if ( recoEles and e1->Pt() >25)
    {
        cut.SetCutBit(Leptons);
        //if (e->IsTriggered("HLT_Ele27_eta2p1_WPLoose_Gsf") ) cut.SetCutBit(Trigger);
        cut.SetCutBit(Trigger);
        Object Z(*e0);
        Z += *e1;
       	if (cut.passAllUpTo(Trigger))Fill("DYAnalysis/Vars/Mee_"+ label,systname ,Z.M(),e->weight()) ;

        if (Z.M()> 60 && Z.M()<120) cut.SetCutBit(Mass);

        if (cut.passAll()){
       	    Fill("DYAnalysis/Vars/Ptee_"+ label,systname, Z.Pt(),e->weight()) ;
            Fill("DYAnalysis/Vars/NJee_"+ label,systname, e->NcentralJets(),e->weight()) ;
       	    Fill("DYAnalysis/Vars/Npvee_"+ label,systname, e->Npv(),e->weight()) ;
            isReco=true;
        }

        if ( Z.Pt() > 500)
        {
            Fill( "DYAnalysis/Vars/MHighPtee_" + label,systname,Z.M() ,e->weight() ) ;
            if( j1 != NULL ) Fill( "DYAnalysis/Vars/MJHighPtee_" + label,systname, j1->InvMass(j0) ,e->weight() ) ;
        }
    }

    if (isReco and isGen) Fill("DYAnalysis/Vars/Accee_"+label,systname, 0);
    else if ( isGen ) Fill("DYAnalysis/Vars/Accee_"+label,systname, 1);
    else if ( isReco ) Fill("DYAnalysis/Vars/Accee_"+label,systname, 2); 

    return 0;
}