Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

runitallbatch2 suballbatch2 allSME250p80m30.lst ffhzzE250p80m30.lst

...

FastJetProcessor.cpp

Code Block
 [noric02] ~/sidhome/lcfi $ diff /u/ey/homer/sidhome/lcfi/build/v01-16-03/MarlinFastJet/v00-01/src/{FastJetProcessor.cpp,FastJetProcessor.cpp.original}
50d49
<       //      string jetparts = _lcJetOutName + string("Parts");
52,53d50
<       //      registerOutputCollection(LCIO::RECONSTRUCTEDPARTICLE, "jetOut", "The identified jets", jetparts, "JetOut");
<       registerOutputCollection(LCIO::RECONSTRUCTEDPARTICLE, "jetpartsOut", "The identified jet components", _lcJetPartsName, "JetParts");
390,395d386
<       //      cout << "step1 - creating vector of particles" << endl;
<       // create output collection with particles used in it
<       IMPL::LCCollectionVec* lccJetsOutParts = new IMPL::LCCollectionVec(LCIO::RECONSTRUCTEDPARTICLE);
<
<       int nelem = 0;
<
404d394
<                       evt->addCollection(lccJetsOutParts, _lcJetPartsName); // store empty collection
411c401
<               nelem = convertFromRecParticle(particleIn);
---
>               convertFromRecParticle(particleIn);
413,418d402
<               if (nelem < 2)
<               {
<                       _statsNrSkippedEmptyEvents++;
<                       evt->addCollection(lccJetsOutParts, _lcJetPartsName); // store empty collection
<                       throw DataNotAvailableException("Collection is there, but its empty after quality cuts!");
<               }
441d424
<
443,444c426
<             //                if (_reconstructedPars->getNumberOfElements() < (int)_nrJets)
<               if (nelem < (int)_nrJets)
---
>               if (_reconstructedPars->getNumberOfElements() < (int)_nrJets)
491,546d472
<       //      cout << "step2 - beginning loop over jets"  << endl;
<       for (it=jets.begin(); it != jets.end(); it++)
<         {
<           // create a reconstructed particle for this jet, and add all the containing particles to it
<           //          ReconstructedParticle* recparts = getRecPar( (*it), cs.constituents(*it) );
<           for (unsigned int n = 0; n < cs.constituents(*it).size(); ++n)
<             {
<               //              cout << "step3 - adding particle" << endl;
<               ReconstructedParticle* p = dynamic_cast< ReconstructedParticle* > (_reconstructedPars->getElementAt(cs.constituents(*it)[n].user_index())) ;
<
<               // create a true ReconstructedParticle
<               ReconstructedParticleImpl* recp = new ReconstructedParticleImpl();
<
<               // save the particle's parameters
<               recp->setEnergy( p->getEnergy() );
<               recp->setMass( p->getMass() );
<               recp->setCharge( p->getCharge() );
<               recp->setMomentum( p->getMomentum() );
<               recp->setType( p->getType() );
<               recp->setCovMatrix( p->getCovMatrix() );
<               recp->setMass( p->getMass() );
<               recp->setCharge( p->getCharge() );
<               recp->setReferencePoint( p->getReferencePoint() );
<               for ( unsigned int k = 0 ; k < p->getParticleIDs().size() ; k++ )
<                 {
<                   ParticleID *pid = p->getParticleIDs()[k] ;
<                   IMPL::ParticleIDImpl* implPID = new IMPL::ParticleIDImpl() ;
<                   implPID->setType( pid->getType() ) ;
<                   implPID->setPDG( pid->getPDG() ) ;
<                   implPID->setLikelihood( pid->getLikelihood() ) ;
<                   implPID->setAlgorithmType( pid->getAlgorithmType() ) ;
<                   for ( unsigned int l = 0 ; l < pid->getParameters().size() ; l++ )
<                     { implPID->addParameter( pid->getParameters()[l] ) ; }
<                   recp->addParticleID( implPID ) ;
<                 }
<               recp->setParticleIDUsed( p->getParticleIDUsed() );
<               recp->setGoodnessOfPID( p->getGoodnessOfPID() );
<               for ( unsigned int k = 0 ; k < p->getParticles().size() ; k++ )
<                 { recp->addParticle( p->getParticles()[k] ); }
<               for ( unsigned int k = 0 ; k < p->getClusters().size() ; k++ )
<                 { recp->addCluster( p->getClusters()[k] ); }
<               for ( unsigned int k = 0 ; k < p->getTracks().size() ; k++ )
<                 { recp->addTrack( p->getTracks()[k] ); }
<               recp->setStartVertex( p->getStartVertex() );
<
<               lccJetsOutParts->addElement( recp );
<
<
<             }
<         }
<
<       //      cout << "step4 -- adding collection" << endl;
< //    string jetparts = _lcJetOutName + string("Parts");
<       evt->addCollection(lccJetsOutParts, _lcJetPartsName);
<       //      cout << "step5 --- past new code" << endl;
<
560d485
<       //      cout << "step6" << endl;
698c623
< int FastJetProcessor::convertFromRecParticle(LCCollection* recCol)
---
> void FastJetProcessor::convertFromRecParticle(LCCollection* recCol)
700d624
<         int nelem=0;
705,720c629,634
<               // add some quality cuts to resolve a background overlay problem - Homer
<               double px = par->getMomentum()[0];
<               double py = par->getMomentum()[1];
<               double pz = par->getMomentum()[2];
<
<               if ((fabs(pz)/sqrt(px*px+py*py+pz*pz)) < 0.99 &&  par->getEnergy() < 1000.) {
<
<                 nelem++;
<                 
<                 _pjList.push_back(
<                                   fastjet::PseudoJet( par->getMomentum()[0],
<                                                       par->getMomentum()[1],
<                                                       par->getMomentum()[2],
<                                                       par->getEnergy() ) );
<                 _pjList.back().set_user_index(i);     // save the id of this recParticle
<               }
---
>               _pjList.push_back(
>                               fastjet::PseudoJet( par->getMomentum()[0],
>                                                                       par->getMomentum()[1],
>                                                                       par->getMomentum()[2],
>                                                                       par->getEnergy() ) );
>               _pjList.back().set_user_index(i);       // save the id of this recParticle
722d635

...

All difference in the LCFIPlus routines were commented out; not including these should make no difference in the output.

algoEtc.cc FlavorTag.cc flavtag.cc

...

Analysis code:

MyDBDvvH.java

MyDBDzHzzAnalysis.java

IsolatedHighPElectronIdentifier.java

...

Combined 4-jet 6-jet performance using a cut at EvisJETS of 140 GeV to determine the preselection cuts to be used:

mvaeffs_BDT.png

mvaeffs_Fisher.png

rejBvsS.png

variables_id_c1.png variables_id_c2.png variables_id_c3.png



...

TMVA driver routine and cut-table code:

sidHZZtmva-v4.C

zzhcuttabmini_v4.c

...

Preselection variables:

   factory->AddVariable( "evisjets", "Evis JETS", "GeV", 'F' );
   factory->AddVariable( "mvisjets", "Mvis JETS", "GeV", 'F' );
   factory->AddVariable( "ptvisjets", "PTvis JETS", "GeV/c", 'F' );
   factory->AddVariable( "blike", "B Likeness", "", 'F' );
   factory->AddVariable( "clike", "C likeness", "", 'F' );
   factory->AddVariable( "nelec", "Number of HE Electrons", 'F' );
   factory->AddVariable( "hmass", "Higgs Mass","GeV/c2", 'F' );
   factory->AddVariable( "ejet1", "Z energy","GeV", 'F' );
   factory->AddVariable( "ejet2",  "Zstr energy", "GeV", 'F' );
   factory->AddVariable( "cjet1",  "Z cos theta","", 'F' );
   factory->AddVariable( "cjet2",  "Zstr cos theta", "", 'F' );
   factory->AddVariable( "mjet1",  "Z mass", "GeV/c2", 'F' );
   factory->AddVariable( "mjet2",  "Zstr mass", "GeV/c2", 'F' );
   factory->AddVariable( "dphi",  "azimuthal separation of Z jets", "", 'F' );
   factory->AddVariable( "jetthrust",  "thrust", "1", 'F' );
   factory->AddVariable( "nchtrks",  "Number Charged Tracks", "", 'F' );

...

Code Block
 if ( EvisJETS<140.0){
if (nTrks>10 &&  EvisJETS>60.0 && PTvisJETS>5.0 && hmass>50.  && hmass<140. && fabs(fabs(dph)-3.14159)>0.15  && ej1>40. && jetthrust<0.99) presel=1; // #4 LOW  EVIS

} else {
if (nTrks>20 && EvisJETS<220.0 && PTvisJETS>5.0  && hmass>100. && hmass<150. &&  fabs(fabs(dph)-3.14159)>0.05 && ej1<130. &&  jetthrust<0.99) presel=1; // #10

}

...

 // common0410


...

Performance of different MVA options:

Code Block
 [neal@localhost weights]$ grep -A 8 -i optimal- ../hzzv14-presel-v4-new-common0410results.txt
 --- Classifier   (  #signal, #backgr.)  Optimal-cut  S/sqrt(S+B)      NSig      NBkg   EffSig   EffBkg
 -- ---------------------------------------------------------------------------------------------
 ---       Cuts:  ( 664.0744,1312202.5)      -0.0050            0         0         0        0        0
 --- Likelihood:  ( 664.0744,1312202.5)       1.0000     0.728991  644.0848  779980.1   0.9699   0.5944
 ---     Fisher:  ( 664.0744,1312202.5)       0.0120      1.70335  258.2099  22721.13   0.3888  0.01732
 ---       BDTG:  ( 664.0744,1312202.5)      -0.9823      1.17754  538.5353  208621.3    0.811    0.159
 ---        BDT:  ( 664.0744,1312202.5)      -0.0462      3.42709  100.6751  762.2891   0.1516 0.0005809
 -- ---------------------------------------------------------------------------------------------

...