---+PAT Exercise 08: Tools for MC truth matching in PAT ---++ Contents * [[#ObJective][Objectives]] * [[#InTro][Introduction]] * [[#SetUp][Setting up the environment]] * [[#RunCode][How to run the code]] * [[#Sources][Sources]] * [[#MoreDetails][Find out more about the details]] * [[#ExerCises][Exercises]] * [[#SoluTions][Solutions]] * [[#ReviewStatus][Review status]] <!-- %RED% <bf>ATTENTION: THIS EXERCISE IS STILL UNDER MAINTENANCE.</bf> %ENDCOLOR% --> #ObJectives ---++ Objectives * Learn about the support of any kind of matching in the Analysis Tools (AT) Group. * Learn how PAT exploits these matching tools for Monte Carlo truth matching. * Learn how to configure Monte Carlo truth matching in PAT and how to access it. %X% *Note:* This web course is part of the [[WorkBookPATTutorial][PAT Tutorial]], which takes regularly place at cern and in other places. When following the PAT Tutorial the answers of questions marked in %RED%<bf>RED</bf>%ENDCOLOR% should be filled into the exercise form that has been introduced at the beginning of the tutorial. Also the solutions to the [[#ExerCises][Exercises]] should be filled into the form. The exercises are marked in three colours, indicating whether this exercise is basic (obligatory), continuative (recommended) or optional (free). The colour coding is summarized in the table below: | *Color Code* | *Explanation* | | :red: | Basic exercise, which is obligatory for the PAT Tutorial. | | :yellow: | Continuative exercise, which is recommended for the PAT Tutorial to deepen what has been learned. | | :green: | Optional exercise, which shows interesting applications of what has been learned. | Basic exercises ( :red: ) are obliged and the solutions to the exercises should be filled into the exercise form during the PAT Tutorial. #InTro ---++ Introduction If you work on FNAL you can find instructions how to setup the environment here: WorkBookRemoteSiteSpecifics. The matching between two different physics objects is a common task in analyses. To do this the Analysis Tools (AT) group provides an evolved architecture that can be used for many purposes. This exercise should make you familiar with the potential of these tools, how PAT exploits of them and how to use it in your analysis. You will learn the following: * How to access the matching information starting from a _pat::Candidate_. * What different kinds of matching are supported by PAT (AT). * How to choose and configure the PAT-Matching to your needs. * How to store multiple matches and access. * What dependencies do exist when skimming of the event content. At the end you can find some exercises to consolidate your knowledge. #SetUp ---++ Setting up of the environment We assume that you are logged in on =lxplus= and are in your work directory. If not you can follow the instruction given [[WorkBookPATTupleCreationExercise#SetUp][here]]. <PRE> mkdir exercise08 cd exercise08 cmsrel CMSSW_%PATTUTORIALRELEASE% cd CMSSW_%PATTUTORIALRELEASE%/src cmsenv git cms-merge-topic -u CMS-PAT-Tutorial:CMSSW_7_1_0_patTutorial scram b -j 4 </PRE> #RunCode ---++ How to run the code Run the example by typing <verbatim> cd PhysicsTools/PATExamples/test cmsRun mypatmatching_Task0_cfg.py | tee runLogGen.log cmsRun mypatmatching_Task1_cfg.py cmsRun mypatmatching_Task2_cfg.py </verbatim> For this example we produce PAT on the fly from a !RECO input file, which means that we will not make the created pat::Candidate collections persistent. We analyse the data with a dedicated !EDAnalyzer in the same process and investigate the PAT Monte Carlo matching with some basic histograms saved in the output file =histo.root=. ---++ Sources You can use %SYNTAX{ syntax="python"}% ## Source process.source.fileNames = ['file:/afs/cern.ch/sw/lcg/tmp/PAT_Tutorial_Summer14/exercise_08_04DF20AC-28B5-E311-814A-003048679296.root'] %ENDSYNTAX% <!--process.source.fileNames = ['/store/relval/CMSSW_7_1_0/RelValProdTTbar_13/AODSIM/POSTLS171_V15-v1/00000/96855E2B-8DFB-E311-9EEB-0025905A60CA.root']--> These event sample was generated as !RelVal sample using !CMSSW_%PATTUTORIALRELEASE%. #MoreDetails ---++ Find out more about the details ---++++(Task-0) genParticles candidates Do you know how to access genParticles candidates collection? We can start from _PhysicsTools/PATExamples/src/MyPatMatchingTask0.cc_. %SYNTAX{ syntax="cpp"}% edm::Handle<GenParticleCollection> genParticles; iEvent.getByLabel("genParticles", genParticles); // if(genDebug_==true){ for(size_t i = 0; i < genParticles->size(); ++ i) { if(i>200) break; const GenParticle & ParticleCand = (*genParticles)[i]; cout<<i<<") Particle = "<<ParticleCand.pdgId()<<", Status = "<<ParticleCand.status()<<endl; // Daughter const GenParticleRefVector& daughterRefs = ParticleCand.daughterRefVector(); for(reco::GenParticleRefVector::const_iterator idr = daughterRefs.begin(); idr!= daughterRefs.end(); ++idr) { cout<<" - Daughter "<<(*idr).key()<<" "<<(*idr)->pdgId()<<endl; } // Mother const GenParticleRefVector& motherRefs = ParticleCand.motherRefVector(); for(reco::GenParticleRefVector::const_iterator imr = motherRefs.begin(); imr!= motherRefs.end(); ++imr) { cout<<" - Mother "<<(*imr).key()<<" "<<(*imr)->pdgId()<<endl; } } } %ENDSYNTAX% When you do =cmsRun mypatmatching_Task0_cfg.py | & tee runLogGen.log=, you can see on the screen and also in the =runLogGen.log=, particles are produced step by step, starting from proton (pdgId = 2212), and status values correspond to the following meanings: | *status* | *meaning* | | 1 | stable particle (handed over to Geant4 for detector simulation) | | 2 | particle after parton showering and !ISR/FSR | | 3 | particle before parton showering and !ISR/FSR (i.e. as it comes from matrix element calculation) | Let's see how the generator produce ttbar event. Note that, the status =1= does not mean =stable particle= in nature, but it means that particle has long lifetime enough to enter to the detector (interact with material). In this case, the detector simulation software (i.e. [[http://geant4.cern.ch/][Geant4]]) will take care for them. %ICON{question}% *Question 8 a)* What !EventContent(s) does contain =genParticles collection=?<BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% You can see comments in %GITL%blob/CMSSW_%PATTUTORIALRELEASE%/Configuration/EventContent/python/EventContent_cff.py][EventContent_cff.py]] %ENDTWISTY% %ICON{question}% *Question 8 b)* How do you know that you ROOT data file contains genParticle collection?<BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% edmDumpEventContent yourData.root | grep genParticles %ENDTWISTY% ---++++(Task-1) Create your own MC Matching To do this, you need 3 steps:<BR> (1) Define your matching.<BR> (2) Add matching information to your related objects and make it accessible.<BR> (3) Enjoy your analysis.<BR> ---+++++(1.1) Define your matching. In the configuration =mypatmatching_Task1_cfg.py=, you will see the following syntaxes: %SYNTAX{ syntax="python"}% process.muMatch1 = process.muonMatch.clone(mcStatus = [1]) process.muMatch3 = process.muonMatch.clone(mcStatus = [3]) %ENDSYNTAX% In this syntax, we clone the !EDProducer =muonMatch= of the _patDefaultSequence_ and change the parameter _mcStatus_ to different values. Do you remember status =1= and =3= represent? %X% *Note:* There is an alternative way to do the cloning and parameter replacement in two steps: %TWISTY{mode="div" showlink="Example " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% %SYNTAX{ syntax="python"}% process.muMatch3 = process.muonMatch.clone() process.muMatch3.mcStatus = [3] %ENDSYNTAX% %ENDTWISTY% %ICON{question}% *Question 8 c)* How would you proceed to check the parameters of the original _muonMatch_ module? <BR> %TWISTY{mode="div" showlink="Hints " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% There is quite a few possibilities. We list three of them here: * Make use of interactive _python_ and check for the configuration of _muonMatch_: <verbatim> python -i mypatmatching_Task1_cfg.py </verbatim> %SYNTAX{ syntax="python"}% >>> process.muonMatch cms.EDProducer("MCMatcher", src = cms.InputTag("muons"), maxDPtRel = cms.double(0.5), mcPdgId = cms.vint32(13), mcStatus = cms.vint32(1), resolveByMatchQuality = cms.bool(False), maxDeltaR = cms.double(0.5), checkCharge = cms.bool(True), resolveAmbiguities = cms.bool(True), matched = cms.InputTag("genParticles") ) %ENDSYNTAX% Try =process.muMatch1=, and =process.muMatch3=. * Use the !ConfigBrowser. <verbatim> edmConfigBrowser mypatmatching_Task1_cfg.py </verbatim> * Have a look to the github. You can find the proper file in the [[%GITL%blob/CMSSW_%PATTUTORIALRELEASE%/PhysicsTools/PatAlgos/python/mcMatchLayer0/muonMatch_cfi.py][mcMatchLayer0]] directory of the _PatAlgos_ package. %ENDTWISTY% Remember: To define your own matching, you can clone from existings (as we show above) or you modify defaults. %ICON{question}% *Question 8 d)* Where does the default MC matching configurations stay?<BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% =PhysicsTools/PatAlgos/python/mcMatchLayer0= %ENDTWISTY% ---+++++(1.2) Add matching information to your related objects and make it accessible. Now, we add our newly created modules to the _patDefaultSequence_. Using the member function =replace= of the class Sequence the new matching modules substitute the the old ones. %SYNTAX{ syntax="python"}% process.patDefaultSequence.replace(process.muonMatch, process.muMatch1 + process.muMatch3 ) %ENDSYNTAX% %X% *Note:* You can use the _python_ interpreter to find out which member function the class object of cms has. Just type =python -i= in your shell and load the !ParameterSet of the Framework as you usually do in the first line of your cfg-files. Then use dir(class_you_are_interested_in) and help(function_of_this_class) to find out how to use a specific function. For the above example a summary of these steps is given below: %TWISTY{mode="div" showlink="Example " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% <verbatim>cmsenv python -i import FWCore.ParameterSet.Config as cms dir(cms) dir(cms.Sequence) help(cms.Sequence.replace) q </verbatim> Use =Ctrl-d= to exit python interpreter. %ENDTWISTY% As the matching information should be accessible via the _pat::Muon_ the module _patMuons_ holds a parameter =genParticleMatch=. Note that this parameter is of type _std::vector<edm::InputTag>_, so you can store more than one match, we will replace the default configuration by the two matches we created beforehand: %SYNTAX{ syntax="python"}% process.patMuons.genParticleMatch = cms.VInputTag( cms.InputTag("muMatch3"), cms.InputTag("muMatch1") ) %ENDSYNTAX% For this we had to make sure of course, that both modules were produced before the _patMuon_ will appear in the sequence. Now that we have adapted the _patDefaultSequence_ let's add it to the _process.Path_: %SYNTAX{ syntax="python"}% process.p = cms.Path(process.patDefaultSequence + process.analyzePatMCMatching) %ENDSYNTAX% Before we concentrate on the !EDAnalyzer to convince ourselves that all changes work fine make sure you can answer the following questions: %ICON{question}% *Question 8 e)* Where in the Pat Workflow is the matching performed? <BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% Check out the [[WorkBookPATWorkflow]] and use [[WorkBookConfigEditor]] (or just github or lxr) for browsing the cff/cfi-chain of the _patDefaultSequence_ %ENDTWISTY% %ICON{question}% *Question 8 f)* How can you configure the matching? %RED%What other parameters than _mcStatus_ do exist %ENDCOLOR% and what are they good for? <BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% Have a look at [[SWGuidePATMCMatching]]. Inspect the configuration file with =python -i mypatmatching_Task1_cfg.py= or simply look it up in github or lxr. The meaning of the parameters will become clearer in the next section. %ENDTWISTY% %ICON{question}% *Question 8 g)* How is the matching information embedded into the pat::Candidates? %RED% Which parameters of the Object Producer modules concern the matching %ENDCOLOR% and what are they good for? <BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% You can for instance find the module definitions in the %GITL%blob/CMSSW_%PATTUTORIALRELEASE%/PhysicsTools/PatAlgos/python/producersLayer1/][PhysicsTools/PatAlgos/python/producersLayer1]] sub-directory of the _PatAlgos_ package on github. %ENDTWISTY% ---+++++(1.3) Enjoy your analysis. Open the !EDAnalyzer plugin definition _PhysicsTools/PATExamples/src/MyPatMatchingTask1.cc_. You can find more information about the rest of the module at [[WorkBookPATAccessExercise]]. We will directly move on to the member function _analyze_. First we read in a common _edm::Handle_ to access the _pat::Muons_. %SYNTAX{ syntax="python"}% edm::Handle<edm::View<pat::Muon> > muons; iEvent.getByLabel(muonSrc_,muons); for(edm::View<pat::Muon>::const_iterator muon=muons->begin(); muon!=muons->end(); ++muon){ %ENDSYNTAX% Since we have stored more than one Monte Carlo match we loop over them. %SYNTAX{ syntax="python"}% for(uint i = 0 ; i < muon->genParticleRefs().size() ; ++i ){ switch( muon->genParticle(i)->status() ){ %ENDSYNTAX% To illustrate the effect of the two different matches, histograms are created which show the resolution in deltaR. What do you expect for the resolution in deltaR and the number of possible matches for the status 1 muons with respect to the status 3 muons? To see if you are right have a look at them with the _root_ Browser: <verbatim> root -l histo.root new TBrowser </verbatim> %X% *Note:* __%RED%Don't get nervous%ENDCOLOR%__ if one of the histograms that you produced is indeed empty. Go through the configuration of the matching modules once again.<BR> %ICON{question}% *Question 8 h)* Do you understand why one set of histograms is empty? <BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% Compare the definition of the matching plot in the =MyPatMatchingTask1.cc= module implementation. %ENDTWISTY% Before moving to the exercises make sure you are able to answer the following questions: %ICON{question}% *Question 8 i)* How can you access matching information starting from a PAT candidate? <BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% Look it up in the Doxygen pages of the according Candidate (e.g. for muons [[http://cmssdt.cern.ch/SDT/doxygen/CMSSW_%PATTUTORIALRELEASE%/doc/html/d6/d13/classpat_1_1Muon.html][here]]) %ENDTWISTY% %ICON{question}% *Question 8 j)* How can you distinguish the different matches you embedded? <BR> %TWISTY{mode="div" showlink="Some Hints... " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% For example with their status or their pdgId. %ENDTWISTY% ---++++(Task-2) "On the fly" particles. As we discussed in Task-0, in the generator level, we doesn't pass only stable particles to the detector simulation, we also pass some exotic particles which have long life time enough to interact with detector before their decay, to the detector simulation. An example of this setting is: %SYNTAX{ syntax="fortran"}% 'MSTJ(22)=2 ! Decay those unstable particles', 'PARJ(71)=10 .! for which ctau 10 mm', %ENDSYNTAX% With this syntax, it tells PYTHIA6 to decay unstable particles but not for particles which have lifetime (in c*tau unit) longer than 10 mm. #ExerCises ---++ Exercises ---++++(Task-0): :green: *Exercise 8 a)*: From the example, you can see how to get information directly from genParticle candidates, so it means you can study at the parton level. There is no exercise here, but it will be important to you when you want to show results at the parton level, i.e. differential cross section of the highest jet pt or charge lepton asymmetry in some SUSY models, produced by generator compare with the data or detector simulation results. ---++++(Task-1): :red: *Exercise 8 b)*: Accessing the matching information: Instead of looping over the different matches pick the match directly with an appropriate member function which is able to distinguish the status and pdgIds of the matches. <BR> %ICON{question}% %RED% How is this member function called? %ENDCOLOR% <BR> <!-- %TWISTY{mode="div" showlink="SOLUTION " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% The according member function is genParticleById(). We show an example of the modified loop over the muons below: %SYNTAX{ syntax="cpp"}% for(edm::View<pat::Muon>::const_iterator muon=muonCollection->begin(); muon!=muonCollection->end(); ++muon){ if(muon->genParticleById(0,1).isNonnull() ){ histContainer_["DR_status1Match"]->Fill( ROOT::Math::VectorUtil::DeltaR(muon->p4() , (muon->genParticleById(0,1))->p4() ) ); histContainer_["DPt_status1Match"]->Fill(muon->pt() - (muon->genParticleById(0,1))->pt() ); } } %ENDSYNTAX% %ENDTWISTY% %X% *Note:* The following might be of help for you: * The Doxygen page of the _pat::Muon_ you can find [[http://cmssdt.cern.ch/SDT/doxygen/CMSSW_%PATTUTORIALRELEASE%/doc/html/d6/d13/classpat_1_1Muon.html][here]]. * Make sure the Ref to the match is nonNull. See [[https://cmssdt.cern.ch/SDT/doxygen/CMSSW_%PATTUTORIALRELEASE%/doc/html/d1/db7/structedm_1_1Ref.html][here]] how to check this. :red: *Exercise 8 c)*: Skimming the event content: Imagine that you dropped the _genParticle_ collection from the _EventContent_ in a skimming step where you also run PAT: <BR> %ICON{question}% %RED%What would you have to change to have still access to matching information afterwards? %ENDCOLOR%<BR> <!-- %TWISTY{mode="div" showlink="SOLUTION " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% You would need to embed the matching information in the production step of the pat::Candidates. The following parameters will do the trick: %SYNTAX{ syntax="python"}% addGenMatch = cms.bool(True), embedGenMatch = cms.bool(True), genParticleMatch = cms.InputTag("muonMatch") %ENDSYNTAX% %ENDTWISTY% :yellow: *Exercise 8 d)*: Apply different kinds of matching: Match by deltaPt instead of deltaR and compare by plotting deltaPt for both matchings. <BR> <!-- %TWISTY{mode="div" showlink="SOLUTION " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% The matching module is named _MCMatcherByPt_ instead of _MCMatcher. The functionality is identical, since both matchers are instances of the same templated code. The DPt histogram should become slightly narrower when matching by DPt instead of DR but you probably won't see an effect in our example. We show the modified definition of the _muonMatch_ module: %SYNTAX{ syntax="python"}% process.muonMatchByPt = cms.EDProducer("MCMatcherByPt", # cut on deltaR, deltaPt/Pt; pick best by deltaPt src = cms.InputTag("muons"), # RECO objects to match matched = cms.InputTag("genParticles"), # mc-truth particle collection mcPdgId = cms.vint32(13), # one or more PDG ID (13 = muon); absolute values (see below) checkCharge = cms.bool(True), # True = require RECO and MC objects to have the same charge mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) maxDeltaR = cms.double(0.5), # Maximum deltaR for the match maxDPtRel = cms.double(0.5), # Maximum deltaPt/Pt for the match resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object resolveByMatchQuality = cms.bool(False), # False = just match input in order; True = pick lowest deltaR pair first ) %ENDSYNTAX% %ENDTWISTY% %X% *Note:* The following might be of help for you: * [[https://twiki.cern.ch/twiki/bin/viewauth/CMS/SWGuidePATMCMatching#Setting_up_the_MC_matches][Here]] you can find the corresponding module. :red: *Exercise 8 e)*: Configure the PAT Monte Carlo matching: Try to change some parameters of the matching module and visualise the effect:<BR> %ICON{question}% Change the parameters _maxDeltaR_ and _maxDPtRel_ to some sensible values and check the impact on the histograms. %RED%What are the default values?%ENDCOLOR% %ICON{question}% How does the number of matches change if you set the parameter _checkCharge_ in the definition of the _muonMatch_ module to =False=? How often does a muon of different charge give a match? <BR> <!-- %TWISTY{mode="div" showlink="SOLUTION " hidelink="<small>Hide</small> " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% You probably won't find any match to a different charge because of the small statistics of the example. But you should have switched the parameter _checkCharge = False_ and made use of the muon member function _genParticleById_. %ENDTWISTY% %ICON{question}% Resolve ambiguities by match quality: Does the resolution in DR change?<BR> <!-- %TWISTY{mode="div" showlink="SOLUTION " hidelink="<small>Hide</small> " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% It should become better since the amibiguities are solved by DR. %ENDTWISTY% ---++++(Task-2): :yellow: *Exercise 8 f)*: Store multiple matches: Create a new collection of _inFlightMuons_. Note that the module to produce muons from decay in flight from the Monte Carlo truth is already declared and configured in the _mypatmatching_Task2_cfg.py_ file. %SYNTAX{ syntax="python"}% process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi") process.inFlightMuons = cms.EDProducer("PATGenCandsFromSimTracksProducer", src = cms.InputTag("famosSimHits"), ## use "famosSimHits" for FAMOS, "g4SimHits" for FULLSIM setStatus = cms.int32(-1), particleTypes = cms.vstring("mu+"), ## picks also mu-, of course filter = cms.vstring("pt > 0.5"), ## just for testing makeMotherLink = cms.bool(True), writeAncestors = cms.bool(True), ## save also the intermediate GEANT ancestors of the muons genParticles = cms.InputTag("genParticles"), ) %ENDSYNTAX% __%RED%You have to put it into a proper place in the process path%ENDCOLOR%__. Next create another clone of the _muonMatch_ module and configure it accordingly. Note that you have to change the parameters _mcStatus_ and _matched_ accordingly to do the matching. What are sensible values for _maxDeltaR_ and _maxDPtRel_ in this case? How many muons do not have a status 1 or status 3 but a _inFlightMatch_? See [[WorkBookPATConfiguration][here]] for further information. %X% *Note:* The following might be of help for you: * [[https://twiki.cern.ch/twiki/bin/viewauth/CMS/SWGuidePATMCMatching#Setting_up_the_addition_of_the_m][Here]] you can find the appropriate section in the Pat MC Matching SWGuide. #SoluTions ---++ Solutions <!-- * For Jan14 Tutorial: You can have a look examples of configuration files and analyzer files from _PhysicsTools/PATExamples/.answer_ * For other cases: You can visit [[https://github.com/CMS-PAT-Tutorial/cmssw/tree/CMSSW_7_1_0_patTutorial/PhysicsTools/PatExamples/.answer/][this link]]. --> A set of solutions will be added here within the next days. <!-- You can see them from <PRE> cvs co -r V00-05-22 PhysicsTools/PatExamples/test/analyzePatMCMatchingExtended_cfg.py cvs co -r V00-05-22 PhysicsTools/PatExamples/plugins/PatMCMatchingExtended.cc scram b cmsRun PhysicsTools/PatExamples/test/analyzePatMCMatchingExtended_cfg.py </PRE> --> %X% *Note:* In case of problems don't hesitate to contact the [[SWGuidePAT#Support]]. Having successfully finished *Exercise 8* you might want to proceed to [[WorkBookPATTriggerExercise][<b>Exercise 9</b>]] of the [[SWGuidePAT]] to learn more about the complex world of trigger at CMS. For an overview you can go back to the [[WorkBookPATTutorial]] entry page. #ReviewStatus ---++ Review status %TWISTY{mode="div" showlink="Show " hidelink="Hide " firststart="hide" showimgright="%ICONURLPATH{toggleopen-small}%" hideimgright="%ICONURLPATH{toggleclose-small}%"}% | *Reviewer/Editor and Date (copy from screen)* | *Comments* | | Main.RogerWolf - 17 March 2012 | Added color coding. But this needs some more reordering and an adaptation to the general scheme | | Main.FrancescaRicciTam - 3 July 2013 | Removed version numbers from addpkg commands. | %RESPONSIBLE% Main.YvonneKuessel %BR% %ENDTWISTY%
Attachments
Attachments
Topic attachments
I
Attachment
History
Action
Size
Date
Who
Comment
css
tutorial.css
r1
manage
0.2 K
2011-04-06 - 11:42
RogerWolf
This topic: CMSPublic
>
DefaultWeb
>
WebHome
>
SWGuide
>
WorkBook
>
WorkBookPAT
>
WorkBookPATTutorial
>
SWGuidePATMCMatchingExercise
Topic revision: r93 - 2014-07-03 - FelixHoehle
Copyright &© 2008-2023 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
or Ideas, requests, problems regarding TWiki? use
Discourse
or
Send feedback