diff --git a/Reconstruction/DiTauRec/README.rst b/Reconstruction/DiTauRec/README.rst new file mode 100644 index 0000000000000000000000000000000000000000..b367df6d1814b2375a6767a247d144b3a280d6c8 --- /dev/null +++ b/Reconstruction/DiTauRec/README.rst @@ -0,0 +1,330 @@ +====================== +Di-Tau Reconstruction +====================== + +:authors: David Kirchmeier +:contact: david.kirchmeier@cern.ch + +.. contents:: Table of contents + +| +| +| + +Introduction +============ + +The di-tau reconstruction package (``DiTauRec``) provides a new +method for reconstructing boosted pairs of tau leptons. +It is meant to be an addition to the approach of reconstructing single taus +for a high pT boosted region. +With the approach of single tau reconstruction it is not possible to reconstruct +tau pair topologies with low spatial separation, corresponding to a di-tau pT > 500 GeV. + +The current development of ``DiTauRec`` is focused on full-hadronic tau decays (hadhad) but +also an semi-leptonic decay mode (lephad) is implemented and ready for +further investigation. +Additionally, a multi-variate di-tau identification algorithm is under development which will be able to suppress QCD jet background with high efficiency. + +``DiTauRec`` uses anti-kt-10 fat jets as seeds for its search for di-tau candidates. +These are filtered for subjets. +A candidate for a full-hadronic tau pair decay should include at least two subjets, while +each subjet has to include at least one track. +For semi-leptonic tau pair decays also one subjet plus an electron or muon candidate within +the seed jet area is allowed. + +A general introduction into di-tau tagging in ATLAS can be found in my `master thesis <https://cds.cern.ch/record/2105592>`_. +Some slides about the general implementation can be found `here <https://indico.cern.ch/event/441941/session/1/contribution/7/attachments/1157918/1666256/15-09-22-TauWorkshop.pdf>`_. + +| +| +| + +Implementation +================ + +Di-Tau Builder +------------------- +`DiTauBuilder.cxx <src/DiTauBuilder.cxx>`_ is the main class for di-tau reconstruction. +It sets cuts on the seed jet and loops over all di-tau candidates. +The di-tau candidate information is stored by +`DiTauCandidateData.h <DiTauRec/DiTauCandidateData.h>`_. + +`DiTauBuilder.py <python/DiTauBuilder.py>`_ is the main job options file. +It configures the DiTauBuilder class and defines the names of input and output containers, +as well as the radius parameters for seed jet and subjet reconstruction. + +| + +Di-Tau Reconstruction Tools +--------------------------- + +DiTauBuilder.cxx makes use of several tools which are successively applied to a +di-tau candidate. +The getter functions for these tools are defined in +`DiTauAlgorithmsHolder.py <python/DiTauAlgorithmsHolder.py>`_. +These tools are applied in the following order: + +* `SeedJetBuilder <src/SeedJetBuilder.cxx>`_ (stores seed jet information in + DiTauCandidateData) +* `ElMuFinder <src/ElMuFinder.cxx>`_ (searches for electrons and muons inside the seed jet) +* `SubjetBuilder <src/SubjetBuilder.cxx>`_ (reconstructs subjets within the seed jet) +* `VertexFinder <src/VertexFinder.cxx>`_ (finds the most likely primary vertex) +* `DiTauTrackFinder <src/DiTauTrackFinder.cxx>`_ (associates tracks to the seed jet and checks quality criteria) +* `CellFinder <src/CellFinder.cxx>`_ (stores information of calorimeter cells which are located inside the + subjets) +* `IDvarCalculator <src/IDvarCalculator.cxx>`_ (calculates the f_core ID variable for each subjet which + can be useful for background rejection later) + +These tools are loaded and configured in DiTauBuilder.py and are executed in DiTauBuilder.cxx. +It has to be noted that CellFinder and IDvarCalculator do need cell information, which +is usually not provided in xAOD input files (we will come to that in `Reconstructing Di-Tau Candidates`_). + +| + +Di-Tau Quality Cuts +------------------------ + +These cuts are intended to give a reasonable quality of the di-tau candidate. +By applying a high cut on the seed jet pT only di-tau candidates in the interesting highly boosted tau pair region are stored. + +* Jet pT > 300 GeV +* Subjet pT > 15 GeV, nTracks > 1, n < 5 +* Track pT > 1 GeV, IPd0Max = 1, IPz0Max = 1.5 +* Electron pT > 7 GeV, \|eta\| < 2.47, author: Electron or Ambiguous +* Muon pT > 7 GeV, \|eta\| < 2.47, muon quality = 2 (MuonSelectionTool) + +| + +Di-Tau Event Data Model (EDM) +------------------------------ + +The implementation of the Di-Tau EDM can be found in +`Event/xAOD/xAODTau <https://svnweb.cern.ch/trac/atlasoff/browser/Event/xAOD/xAODTau/trunk>`_. +The pool converters are implemented in +`Event/xAOD/xAODTauAthenaPool <https://svnweb.cern.ch/trac/atlasoff/browser/Event/xAOD/xAODTauAthenaPool>`_. + +| +| +| + +Reconstructing Di-Tau Candidates +================================= + +This section describes how to use ``DiTauRec``. +In samples which are produced with Athena release 20.7.2 +(and above) di-tau candidates will already be available. +If your sample is a HITS, RDO or ESD file and you want to apply ``DiTauRec`` as part of the full reconstruction chain, follow `Environmental Setup`_ and `DiTauRec in Full Reconstruction`_. +If your sample is a xAOD file and you want to apply ``DiTauRec`` follow `Environmental Setup`_ and `DiTauRec with xAOD input`_. +If your xAOD sample already includes di-tau candidates you can continue with +the next chapter `Di-Tau Container Readout`_. + +| + +Environmental Setup +------------------- + +Create a new directory where to setup the athena environment +(feel free to choose another directory name): + +.. code-block:: bash + + mkdir DiTauRec + cd DiTauRec + +Setup atlas (the first 2 lines are only needed, if you are not on lxplus): + +.. code-block:: bash + + export ATLAS_LOCAL_ROOT_BASE=/cvmfs/atlas.cern.ch/repo/ATLASLocalRootBase + alias setupATLAS='source ${ATLAS_LOCAL_ROOT_BASE}/user/atlasLocalSetup.sh' + + setupATLAS + +Setup an athena release, e.g.: + +.. code-block:: bash + + asetup 20.1.5.10,here + +Check out the following packages: + +.. code-block:: bash + + cmt co Reconstruction/DiTauRec + cmt co -r xAODTau-00-01-14 Event/xAOD/xAODTau + cmt co -r xAODTauAthenaPool-00-01-07 Event/xAOD/xAODTauAthenaPool + cmt co -r tauRecTools-00-00-03 Reconstruction/tauRecTools + +In releases older than 20.7.2 ``DiTauRec`` is not part of the reconstruction chain. +Therefore we have to checkout ``RecExCommon`` and ``RecExPers`` and apply a small patch. +You can find the correct tags for ``RecExCommon`` and ``RecExPers`` corresponding to your athena +release via: + +.. code-block:: bash + + cmt show versions Reconstruction/RecExample/RecExCommon + cmt show versions Reconstruction/RecExample/RecExPers + +Now checkout ``RecExCommon`` and ``RecExPers`` (with the correct tags from the command above) and apply the patch via + +.. code-block:: bash + + cmt co -r RecExCommon-00-14-32 Reconstruction/RecExample/RecExCommon + cmt co -r RecExPers-00-03-22 Reconstruction/RecExample/RecExPers + cp /afs/cern.ch/user/d/dkirchme/work/public/DiTauSetup/CombinedRec_config.py Reconstruction/RecExample/RecExCommon/share + cp /afs/cern.ch/user/d/dkirchme/work/public/DiTauSetup/RecoOutput*List_jobOptions.py Reconstruction/RecExample/RecExPers/share + +Finally we can setup a work area and compile: + +.. code-block:: bash + + setupWorkArea.py + cd WorkArea/cmt + cmt bro cmt config + cmt bro make + +| + +DiTauRec in Full Reconstruction +---------------------------------- + +This section is about reconstructing di-tau candidates in HITS, RDO or ESD files. +``DiTauRec`` is executed here as part of the full reconstruction chain. +The advantage is that the ``DiTauRec`` is able to calculate ID variables +by using cell information. +This does not effect the performance of the reconstruction but may improve +a later background separation. +The full reconstruction in athena is done with the ``Reco_tf.py`` script +(for more information see `RecoTf <https://twiki.cern.ch/twiki/bin/view/AtlasComputing/RecoTf>`_ +and `JobTransform <https://twiki.cern.ch/twiki/bin/view/AtlasComputing/JobTransform#General_Documentation>`_). +To get the correct command (which corresponds to the ami tag of the input file) +we have to load ``pyami``: + +.. code-block:: bash + + cd $TestArea + voms-proxy-init -voms atlas + lsetup pyami + +and execute ``GetTfCommand.py`` (also see `TransformConfiguration#Configuration_from_AMI <https://twiki.cern.ch/twiki/bin/view/AtlasComputing/TransformConfiguration#Configuration_from_AMI>`_), e.g.: + +.. code-block:: bash + + GetTfCommand.py --AMI r6869 + +The printed Reco_tf command may have a number of configurations dedicated to the +ami tag you have provided. For the sake of simplicity we will continue with a minimal RecoTf command +(do not forget to change the input file path): + +.. code-block:: bash + + cd $TestArea/WorkArea/run # you may also create a sub-folder for each run + Reco_tf.py --autoConfiguration='everything' --maxEvents '100' --inputESDFile '/path/to/file' --outputAODFile 'myAOD.pool.root' + +In case the run was successful you should see the file ``myAOD.pool.root`` containing +a full set of reconstructed physics objects including ``DiTauJets``. +If this is not the case make sure that you checked out the correct tags of ``RecExCommon`` and ``RecExPers`` and that your input events contain and a sufficient amount of high-pT jets. + +You can configure the above command by using several `DiTauRecFlags <python/DiTauRecFlags.py>`_. +For example you can lower the seed jet cut to 30 GeV with + +.. code-block:: bash + + Reco_tf.py --autoConfiguration='everything' --maxEvents '100' --preExec 'ESDtoAOD:from DiTauRec.DiTauRecFlags import diTauFlags; diTauFlags.diTauRecJetSeedPt.set_Value_and_Lock(30000)' --inputESDFile '/path/to/file' --outputAODFile 'myAOD.pool.root' + +| + +DiTauRec with xAOD input +--------------------------- + +This section is about reconstructing di-tau candidates in (x)AOD files. +The reconstruction is done again with the ``Reco_tf.py`` script +(for more information see `RecoTf <https://twiki.cern.ch/twiki/bin/view/AtlasComputing/RecoTf>`_ +and `JobTransform <https://twiki.cern.ch/twiki/bin/view/AtlasComputing/JobTransform#General_Documentation>`_). +At first go into the run folder + +.. code-block:: bash + + cd $TestArea/WorkArea/run + +then execute ``DiTauRec`` by using the following command (change the input file path first): + +.. code-block:: bash + + Reco_tf.py --preInclude 'DiTauRec/DiTauRecAOD_config.py' --maxEvents '100' --preExec 'all:from DiTauRec.DiTauRecFlags import diTauFlags; diTauFlags.doVtxFinding.set_Value_and_Lock(True); diTauFlags.diTauRecJetSeedPt.set_Value_and_Lock(30000); diTauFlags.doCellFinding.set_Value_and_Lock(False)' --inputAODFile='/path/to/file' --outputAOD_RPRFile='myAOD.pool.root' + +The ``--preInclude`` option defines the job options `DiTauRecAOD_config.py <share/DiTauRecAOD_config.py>`_, which is dedicated to an execution on AOD input files. +After the ``--preExec`` option several `DiTauRecFlags <python/DiTauRecFlags.py>`_ are configured. +Note that vertexing is usally turned off in AOD-to-AOD reconstruction, though it has to be explicitly turned on for ``DiTauRec`` here. +Since cell information is not available in AOD files, the cell finding is turned off. +This does not effect the performance of the reconstruction but may decrease +a later background separation power. +The location of the input file is defined with ``--inputAODFile``, the name of the output file is +defined with the ``--outputAOD_RPRFile`` option. +In case the run was successful you should see the file ``myAOD.pool.root`` containing +the set of reconstructed physics objects you had before plus ``DiTauJets``. +If this is not the case make sure that DiTauRecAOD_config.py is included successfully and that your input events contain and a sufficient amount of high-pT jets. + +| +| +| + +Di-Tau Container Readout +========================= + +This section is about reading a di-tau container in RootCore. +In general, reading di-tau candidates from xAOD works as usual (see `xAOD Analysis in RootCore <https://twiki.cern.ch/twiki/bin/viewauth/AtlasComputing/SoftwareTutorialxAODAnalysisInROOT>`_). +In older base releases the ``xAODTau`` package has to be checked out, since it includes the definitions of the di-tau EDM: + +.. code-block:: bash + + svn co svn+ssh://svn.cern.ch/reps/atlasoff/Event/xAOD/xAODTau/trunk ./xAODTau/ + +In your RootCore executable you have to include the DiTauJetContainer header: + +.. code-block:: c++ + + #include "xAODTau/DiTauJetContainer.h" + +In your ``execute ()`` function do the following + +.. code-block:: c++ + + // get the event + xAOD::TEvent* event = wk()->xaodEvent(); + // get the di-tau container + const xAOD::DiTauJetContainer* xDiTauJetContainer = 0; + if ( !event->retrieve(xDiTauJetContainer, "DiTauJets").isSuccess() ) { + Error("execute()", "Failed to retrieve DiTauJetContainer") ); + return EL::StatusCode::FAILURE; + } + +Now you can loop over the di-tau candidates of the event and access their variables, e.g.: + +.. code-block:: c++ + + for (const auto* ditau: *xDiTauContainer){ + // di-tau pt + pt = ditau->pt() + + // number of subjets + n = ditau->nSubjets() + + // pt of the leading subjet + pt = subjetPt(0) + // pt of the subleading subjet + pt = subjetPt(1) + + // f_core of the leading subjet (only if cell information was provided in sample production) + fCoreLead = ditau->fCore(0) + // f_core of the subleading subjet (only if cell information was provided in sample production) + fCoreSubl = ditau->fCore(1) + + +To see all variables available in the DiTau EDM consult `DiTauJet_v1.cxx <https://svnweb.cern.ch/trac/atlasoff/browser/Event/xAOD/xAODTau/trunk/Root/DiTauJet_v1.cxx>`_ in ``Event/xAOD/xAODTau``. + +| +| +| +| diff --git a/Reconstruction/DiTauRec/python/DiTauBuilder.py b/Reconstruction/DiTauRec/python/DiTauBuilder.py index 786c5e0aa26f56ad8a35d9e094d2df4ba50a986a..eba03f923b39b71079269acbdc0c1dc4e45ecfeb 100644 --- a/Reconstruction/DiTauRec/python/DiTauBuilder.py +++ b/Reconstruction/DiTauRec/python/DiTauBuilder.py @@ -8,18 +8,10 @@ from AthenaCommon.GlobalFlags import globalflags from RecExConfig.Configured import Configured # global tauRec config keys -_outputType = "xAOD::DiTauJetContainer" _outputKey = "DiTauJets" _outputAuxType = "xAOD::DiTauJetAuxContainer" _outputAuxKey = "DiTauJetsAux." _jet_container = "AntiKt10LCTopoJets" -_R_jet = 1.0 # seed jet radius ... TODO check correct implementation in tools -_R_subjet = 0.2 # subjet radius ... TODO check correct implementation in tools -_R_core = 0.1 # subjet core radius ... TODO check correct implementation in tools -_do_cell_finding = True # enable cell finder -_write_jet_cells = True # write seed jet cell information in xAOD -_write_subjet_cells = True # write subjet cell information in xAOD -_use_cells = True # use cells in ID variable calculations class DiTauBuilder(Configured): @@ -55,6 +47,8 @@ class DiTauBuilder(Configured): # DiTauRec Tools # --------------------------------------------------------------- import DiTauRec.DiTauAlgorithmsHolder as DiTauAlgs + from DiTauRec.DiTauRecFlags import diTauFlags + from DiTauRec.DiTauRecConf import DiTauBuilder tools = [] tools.append(DiTauAlgs.getSeedJetBuilder(_jet_container)) @@ -62,20 +56,21 @@ class DiTauBuilder(Configured): tools.append(DiTauAlgs.getSubjetBuilder()) from InDetRecExample.InDetJobProperties import InDetFlags from JetRec.JetRecFlags import jetFlags - if InDetFlags.doVertexFinding() and jetFlags.useTracks(): + if (InDetFlags.doVertexFinding() and jetFlags.useTracks()) or diTauFlags.doVtxFinding: tools.append(DiTauAlgs.getVertexFinder()) pass tools.append(DiTauAlgs.getDiTauTrackFinder()) - if _do_cell_finding: - tools.append(DiTauAlgs.getCellFinder(_write_jet_cells, _write_subjet_cells)) + if diTauFlags.doCellFinding: + tools.append(DiTauAlgs.getCellFinder(self.write_jet_cells, self.write_subjet_cells)) pass - tools.append(DiTauAlgs.getIDVarCalculator(_use_cells)) + + if not diTauFlags.doCellFinding: + self.use_cells = False + tools.append(DiTauAlgs.getIDVarCalculator(self.use_cells)) # --------------------------------------------------------------- # add DiTauBuilder to Algorithm Sequence # --------------------------------------------------------------- - from DiTauRec.DiTauRecFlags import diTauFlags - from DiTauRec.DiTauRecConf import DiTauBuilder DiTauBuilder = DiTauBuilder( name=self.name, DiTauContainer=_outputKey, @@ -85,9 +80,9 @@ class DiTauBuilder(Configured): minPt=diTauFlags.diTauRecJetSeedPt(), maxEta=2.5, OutputLevel=3, - Rjet=_R_jet, - Rsubjet=_R_subjet, - Rcore=_R_core) + Rjet=self.R_jet, + Rsubjet=self.R_subjet, + Rcore=self.R_core) topSequence += DiTauBuilder #print topSequence diff --git a/Reconstruction/DiTauRec/python/DiTauRecFlags.py b/Reconstruction/DiTauRec/python/DiTauRecFlags.py index e7a0c1e538ef62d585bd168d60ee9419a6bd3023..ddce6d6ef53456e07d982a66e3ef213e22fadc4a 100644 --- a/Reconstruction/DiTauRec/python/DiTauRecFlags.py +++ b/Reconstruction/DiTauRec/python/DiTauRecFlags.py @@ -37,6 +37,13 @@ class diTauRecJetSeedPt(JobProperty): statusOn=True allowedTypes=['float'] StoredValue=300000 + +class doVtxFinding(JobProperty): + """ force Vertex Finding on, needed in non standard production + """ + statusOn=True + allowedTypes=['bool'] + StoredValue=False @@ -48,6 +55,15 @@ class doRunDiTauDiscriminant(JobProperty): StoredValue=True +class doCellFinding(JobProperty): + """ switch of cell handling + """ + statusOn=True + allowedTypes=['bool'] + StoredValue=True + + + # Defines a sub-container for the algorithm switches class DiTauRecFlags(JobPropertyContainer): """ tau information """ @@ -56,7 +72,7 @@ class DiTauRecFlags(JobPropertyContainer): jobproperties.add_Container(DiTauRecFlags) # I want always the following flags in the Rec container -_list_tau=[Enabled,doDiTauRec,diTauRecJetSeedPt,doRunDiTauDiscriminant] +_list_tau=[Enabled,doDiTauRec,diTauRecJetSeedPt,doVtxFinding,doRunDiTauDiscriminant,doCellFinding,] for j in _list_tau: jobproperties.DiTauRecFlags.add_JobProperty(j) del _list_tau diff --git a/Reconstruction/DiTauRec/share/DiTauRecAOD_config.py b/Reconstruction/DiTauRec/share/DiTauRecAOD_config.py new file mode 100644 index 0000000000000000000000000000000000000000..b92dba84bd9e6dce87a63a9f7416debae60ad10c --- /dev/null +++ b/Reconstruction/DiTauRec/share/DiTauRecAOD_config.py @@ -0,0 +1,53 @@ +################################################################################ +## +#@file DiTauRecAOD_config.py +# +#@brief Main RecExCommon entry point for the DiTau reconstruction to run on AOD +# +# This file calls the dedicated main jobOptions of DiTauRec. +# Checks make sure that detector conditions are valid to run tau reconstruction. +# +################################################################################ +from RecExConfig.RecFlags import rec +from DiTauRec.DiTauRecFlags import jobproperties +from JetRec.JetRecFlags import jobproperties +from AthenaCommon.BeamFlags import jobproperties +import traceback + +if rec.readAOD() : + _DiTauFail=True + + # the main ditau reconstruction part + try: + include( "DiTauRec/DiTauRec_jobOptions.py" ) + _DiTauFail=False + except Exception: + print traceback.format_exc() + treatException("Could not set up merged DiTauRec. Switched off !") + +else: + if jobproperties.DiTauRecFlags.doDiTauRec(): + jobproperties.DiTauRecFlags.doDiTauRec=False + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Reconstruction/DiTauRec/src/DiTauBuilder.cxx b/Reconstruction/DiTauRec/src/DiTauBuilder.cxx index 512f6d6bad4e5657fc4cf748ef043c7bb319243d..d1aed9a29a421f74328eb31b4a1227d2a05331ad 100644 --- a/Reconstruction/DiTauRec/src/DiTauBuilder.cxx +++ b/Reconstruction/DiTauRec/src/DiTauBuilder.cxx @@ -152,7 +152,7 @@ StatusCode DiTauBuilder::execute() { // seed cuts if (fabs(seed->pt()) < m_minPt) continue; - if (fabs(seed->eta() > m_maxEta)) continue; + if (fabs(seed->eta()) > m_maxEta) continue; // cuts passed rDiTauData.seed = seed; diff --git a/Reconstruction/DiTauRec/src/DiTauTrackFinder.cxx b/Reconstruction/DiTauRec/src/DiTauTrackFinder.cxx index 317d3f286252610c60f6b90c762defb52c6b14a5..6c7e05369ac456593268076f3287c26eda866b8c 100644 --- a/Reconstruction/DiTauRec/src/DiTauTrackFinder.cxx +++ b/Reconstruction/DiTauRec/src/DiTauTrackFinder.cxx @@ -137,7 +137,7 @@ StatusCode DiTauTrackFinder::execute(DiTauCandidateData * data) { ATH_MSG_DEBUG("number of tracks in subjet: "<< nTracks); if (nTracks == 0) { ATH_MSG_DEBUG("number of tracks is zero. Drop subjet"); - vSubjets.erase(subjet_itr); + subjet_itr = vSubjets.erase(subjet_itr); //point subjet_itr to the next element/end of the vector } else { ++subjet_itr; diff --git a/Reconstruction/DiTauRec/src/ElMuFinder.cxx b/Reconstruction/DiTauRec/src/ElMuFinder.cxx index 5f4f8bd90de4c6e66f03a842e3c1e89e52928272..6ff496b6c31f7f1227f67d9d55cedc1564c0c5f9 100644 --- a/Reconstruction/DiTauRec/src/ElMuFinder.cxx +++ b/Reconstruction/DiTauRec/src/ElMuFinder.cxx @@ -55,7 +55,7 @@ ElMuFinder::~ElMuFinder() { //------------------------------------------------------------------------- StatusCode ElMuFinder::initialize() { - CP::MuonSelectionTool m_muSelectionTool("MuonSelection_forDiTau"); + CP::MuonSelectionTool m_muSelectionTool("MuonSelection_forDiTau"); m_muSelectionTool.setProperty("MaxEta", 2.7); m_muSelectionTool.setProperty("MuQuality", 2); if (m_muSelectionTool.initialize().isFailure()) { @@ -137,8 +137,10 @@ StatusCode ElMuFinder::execute(DiTauCandidateData * data) { for (const auto& mu : *pMuCont) { ATH_MSG_DEBUG("muon pt:" << mu->pt() << " eta:" << mu->eta() << " "); // if (m_muSelectionTool.accept(*mu)) - if (m_muSelectionTool.getQuality(*mu) >= m_muQual && std::abs(mu->eta()) >= m_muMaxEta) - continue; + xAOD::Muon::Quality muonQuality = mu->quality(); + if (muonQuality >= m_muQual && std::abs(mu->eta()) >= m_muMaxEta) continue; + //if (m_muSelectionTool->getQuality(*mu) >= m_muQual && std::abs(mu->eta()) >= m_muMaxEta) + //continue; // electron inside seed jet area? dR = Tau1P3PKineUtils::deltaR(data->seed->eta(), data->seed->phi(), mu->eta(), mu->phi()); @@ -153,4 +155,4 @@ StatusCode ElMuFinder::execute(DiTauCandidateData * data) { return StatusCode::SUCCESS; -} \ No newline at end of file +} diff --git a/Reconstruction/DiTauRec/src/VertexFinder.cxx b/Reconstruction/DiTauRec/src/VertexFinder.cxx index afaf4b229829a93f130b35f512cb66c6026814fa..e384456480bd92adb05edfe6bf2a71ce0c11adfd 100644 --- a/Reconstruction/DiTauRec/src/VertexFinder.cxx +++ b/Reconstruction/DiTauRec/src/VertexFinder.cxx @@ -21,7 +21,8 @@ VertexFinder::VertexFinder(const std::string& type, DiTauToolBase(type, name, parent), m_primVtxContainerName("PrimaryVertices"), m_assocTracksName("GhostTrack"), - m_trackVertexAssocName("JetTrackVtxAssoc_forDiTaus") + m_trackVertexAssocName("JetTrackVtxAssoc_forDiTaus"), + m_maxJVF(-100) { declareInterface<DiTauToolBase > (this); declareProperty("PrimVtxContainerName", m_primVtxContainerName);