LCFIVertex  0.7.2
LCFIAIDAPlotProcessor.h
1 #ifndef LCFIAIDAPlotProcessor_h
2 #define LCFIAIDAPlotProcessor_h
3 
4 
5 
6 //===============================================================================================================
7 // LCFIAIDAPlotProcessor Class - make plots of the LCFI flavour tag and vertex charge input and output variables
8 //===============================================================================================================
9 
10 
71 //Marlin and LCIO includes
72 #include "marlin/Processor.h"
73 #include "lcio.h"
74 #include "EVENT/ReconstructedParticle.h"
75 #include "EVENT/LCCollection.h"
76 #include "EVENT/LCIntVec.h"
77 #include "EVENT/LCFloatVec.h"
78 #include "EVENT/MCParticle.h"
79 
80 #include <iostream>
81 #include <fstream>
82 
83 //AIDA includes...
84 #include <AIDA/IHistogram1D.h>
85 #include <AIDA/IDataPointSet.h>
86 #include <AIDA/ITuple.h>
87 
88 
89 
90 
91 class LCFIAIDAPlotProcessor : public marlin::Processor
92 {
93 public:
94  //this bit has to be done for all Marlin processors
95  virtual Processor* newProcessor() { return new LCFIAIDAPlotProcessor; }
96 
98  virtual ~LCFIAIDAPlotProcessor();
99 
100  virtual void init();
101 
102  virtual void processRunHeader( LCRunHeader* pRun );
103 
104  virtual void processEvent( LCEvent* pEvent );
105 
106  virtual void check( LCEvent* pEvent );
107 
108  virtual void end();
109 protected:
110 
112  std::vector<std::string> _FlavourTagCollectionNames;
113  std::vector<std::string> _FlavourTagInputsCollectionNames;
114  std::string _TrueJetFlavourColName;
115  std::string _JetCollectionName;
116  std::string _VertexColName;
117  std::string _CVertexChargeCollection;
118  std::string _BVertexChargeCollection;
119 
120  std::string _TrueTracksToMCPCollection;
121  std::string _ZVRESSelectedJetsCollection;
122  std::string _ZVRESDecayChainRPTracksCollection;
123  std::string _ZVRESDecayChainCollection;
124 
125 
131  double _PJetMin;
133  double _PJetMax;
134 
136  double _BTagNNCut;
138  double _CTagNNCut;
139 
141 
143  bool _MakeTuple;
144  bool _MakePurityEfficiencyPlots;
145  bool _PrintPurityEfficiencyValues;
146  bool _MakeAdditionalPlots;
147 
148  std::string _PurityEfficiencyOutputFile;
149  std::string _TrackVertexOutputFile;
150 
151  int _iVertexChargeTagCollection;
152  unsigned int _myVertexChargeTagCollection;
153 
154  std::vector<std::string> _VertexCatNames;
155  std::vector<std::string> _NumVertexCatDir;
156  std::vector<std::string> _ZoomedVarNames;
157  std::string _MCParticleColName;
158 
159  std::vector<AIDA::IHistogram2D*> _pBJetCharge;
160  std::vector<AIDA::IHistogram2D*> _pCJetCharge;
161 
162  std::vector<AIDA::IHistogram1D*> _pCDecayLengthAll;
163  std::vector<AIDA::IHistogram1D*> _pBDecayLengthAll;
164  std::vector<AIDA::IHistogram1D*> _pCDecayLengthTwoVertices;
165  std::vector<AIDA::IHistogram1D*> _pBDecayLengthTwoVertices;
166 
168  AIDA::IHistogram2D* _pBJetCharge2D;
170  AIDA::IHistogram2D* _pCJetCharge2D;
171 
173  AIDA::IHistogram1D* _pBJetLeakageRate;
175  AIDA::IHistogram1D* _pCJetLeakageRate;
177  AIDA::IHistogram1D* _pBJetVertexCharge;
179  AIDA::IHistogram1D* _pCJetVertexCharge;
180 
181 
182  AIDA::IHistogram2D* _decayLengthCJet2D;
183  AIDA::IHistogram2D* _decayLengthBJet2D;
184 
185  AIDA::ICloud2D* _decayLengthCJetCloud2D;
186  AIDA::ICloud2D* _decayLengthBJetCloud2D;
187 
188 
189  std::vector< std::map<std::string,unsigned int> > _IndexOfForEachTag;
190  std::vector< std::map<std::string,unsigned int> > _InputsIndex;
191  std::vector< std::map<std::string,unsigned int> > _ZoomedInputsIndex;
192  std::map<std::string,unsigned int> _FlavourIndex;
193 
195  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _inputsHistogramsBJets;
197  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _inputsHistogramsCJets;
199  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _inputsHistogramsUDSJets;
200 
202  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _zoomedInputsHistogramsBJets;
204  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _zoomedInputsHistogramsCJets;
206  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _zoomedInputsHistogramsUDSJets;
207 
209  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pLightJetBTag;
211  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pLightJetCTag;
213  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pBJetBTag;
215  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pBJetCTag;
217  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pCJetBTag;
219  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pCJetCTag;
221  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pBJetBCTag;
223  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pCJetBCTag;
225  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pLightJetBCTag;
227  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pBTagBackgroundValues;
229  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pCTagBackgroundValues;
231  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pBCTagBackgroundValues;
232 
236  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pBJetBTagIntegral;
237  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pCJetBTagIntegral;
238  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pLightJetBTagIntegral;
239  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pBJetCTagIntegral;
240  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pCJetCTagIntegral;
241  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pLightJetCTagIntegral;
242  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pBJetBCTagIntegral;
243  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pCJetBCTagIntegral;
244  std::vector< std::map<std::string,AIDA::IHistogram1D*> > _pLightJetBCTagIntegral;
245 
248 
250  static const unsigned int N_VERTEX_CATEGORIES=3;
251 
253  AIDA::ITuple* _pMyTuple;
254 
255  int _lastRunHeaderProcessed;
256  int _suppressOutputForRun;
257 
258  bool PassesEventCuts( LCEvent* pEvent );
259  bool PassesJetCuts( ReconstructedParticle* pJet );
260  void FillInputsPlots( LCEvent* pEvent, unsigned int jetNumber );
261  void FillTagPlots( LCEvent* pEvent, unsigned int jetNumber );
262  void FillVertexChargePlots( LCEvent* pEvent, unsigned int jetNumber );
263  void FillVertexPlots( LCEvent* pEvent, unsigned int jetNumber );
264  void CalculateEfficiencyPurityPlots();
265  void CalculateAdditionalPlots();
266  void CreateFlavourTagInputPlots(LCRunHeader* pRun);
267  void CreateFlavourTagTuple();
268  void CreateTagPlots();
269  void CreateAdditionalPlots();
270 
271  static const int B_JET=5;
272  static const int C_JET=4;
273 
275  // this is something that could potentially become a user defined parameter
276  static const int N_JETANGLE_BINS=10;
277 
278 
279 
280  float CalculateDistance(const float* pos1, const float* pos2);
281  double CalculateDistance(const double* pos1, const double* pos2);
282 
284  int FindTrueJetType( LCEvent* pEvent, unsigned int jetNumber );
286  float FindTrueJetHadronCharge(LCEvent* pEvent, unsigned int jetNumber);
288  int FindTrueJetPDGCode( LCEvent* pEvent, unsigned int jetNumber );
290  float FindTrueJetPartonCharge(LCEvent* pEvent, unsigned int jetNumber);
292  int FindTrueJetFlavour(LCEvent* pEvent, unsigned int jetNumber);
294  void FindTrueJetDecayLength( LCEvent* pEvent, unsigned int jetNumber, std::vector<double>& decaylengthvector, std::vector<double>& bjetdecaylengthvector, std::vector<double>& cjetdecaylengthvector);
295  void FindTrueJetDecayLength2( LCEvent* pEvent, unsigned int jetNumber, double& bjetdecaylength, double& cjetdecaylength);
297  int FindNumVertex( LCEvent* pEvent, unsigned int jetNumber, unsigned int iInputsCollection);
299  int FindCQVtx( LCEvent* pEvent, unsigned int jetNumber);
301  int FindBQVtx( LCEvent* pEvent, unsigned int jetNumber);
302 
303  void CalculateTagEfficiency(const AIDA::IHistogram1D* pSignal, std::vector<double>& tagEfficiency, std::vector<double>& tagError);
304  void CalculateTagPurity(const AIDA::IHistogram1D* pSignal, const AIDA::IHistogram1D* pBackground, std::vector<double>& tagPurity, std::vector<double>& tagPurityError);
305 
306  void CalculateIntegralAndBackgroundPlots();
307 
308  int GetPDGFlavour(int code);
309 
310  void FillZVRESTable(LCEvent* pEvent);
311  void PrintNNOutput();
312  void PrintZVRESTable();
313 
314  void InitialiseFlavourTagInputs(LCRunHeader* pRun );
315  void InternalVectorInitialisation();
316 
318  AIDA::IDataPointSet* CreateEfficiencyPlot(const AIDA::IHistogram1D* pSignal, AIDA::IDataPointSet* pDataPointSet);
320  AIDA::IDataPointSet* CreateEfficiencyPlot2(const AIDA::IHistogram1D* pAllEvents, const AIDA::IHistogram1D *pPassEvents, AIDA::IDataPointSet* pDataPointSet);
322  AIDA::IDataPointSet* CreateIntegralPlot(const AIDA::IHistogram1D* pNN, AIDA::IDataPointSet* pIntegral);
324  AIDA::IDataPointSet* CreatePurityPlot(const AIDA::IHistogram1D* pSignal, const AIDA::IHistogram1D* pBackground, AIDA::IDataPointSet* pDataPointSet);
326  AIDA::IDataPointSet* CreateLeakageRatePlot(const AIDA::IHistogram1D* pBackground, AIDA::IDataPointSet* pDataPointSet);
328  AIDA::IDataPointSet* CreateXYPlot(const AIDA::IDataPointSet* pDataPointSet0, const AIDA::IDataPointSet* pDataPointSet1, AIDA::IDataPointSet* xyPointSet, const int dim0=0, const int dim1=0 );
330  AIDA::IHistogram1D* CreateIntegralHistogram(const AIDA::IHistogram1D* pNN, AIDA::IHistogram1D* pIntegral);
331 
333  void CreateVertexChargeLeakagePlot(AIDA::IDataPointSet* pBJetVtxChargeDPS, AIDA::IDataPointSet* pCJetVtxChargeDPS);
335 
336  //vertex plots
337  AIDA::IHistogram1D* _pVertexDistanceFromIP;
338  AIDA::IHistogram1D* _pVertexPositionX;
339  AIDA::IHistogram1D* _pVertexPositionY;
340  AIDA::IHistogram1D* _pVertexPositionZ;
341  AIDA::IHistogram1D* _pPrimaryVertexPullX;
342  AIDA::IHistogram1D* _pPrimaryVertexPullY;
343  AIDA::IHistogram1D* _pPrimaryVertexPullZ;
344  AIDA::IHistogram1D* _pPrimaryVertexPositionX;
345  AIDA::IHistogram1D* _pPrimaryVertexPositionY;
346  AIDA::IHistogram1D* _pPrimaryVertexPositionZ;
347 
348  AIDA::IHistogram1D* _reconstructedSecondaryDecayLength;
349  AIDA::IHistogram1D* _reconstructedSecTerDecayLength;
350  AIDA::IHistogram2D* _numberOfJetsDC;
351  AIDA::IHistogram1D* _numberOfSecondaryVertices;
352 
353  AIDA::IHistogram1D* _recoDecayLengthBJet;
354  AIDA::IHistogram1D* _recoDecayLengthBCJet;
355  AIDA::IHistogram1D* _nVerticesBJet;
356  AIDA::IHistogram1D* _recoDecayLengthCJet;
357  AIDA::IHistogram1D* _nVerticesCJet;
358  AIDA::IHistogram1D* _recoDecayLengthLightJet;
359  AIDA::IHistogram1D* _nVerticesLightJet;
360  AIDA::IHistogram1D* _decayLengthBJetTrue;
361  AIDA::IHistogram1D* _decayLengthBCJetTrue;
362  AIDA::IHistogram1D* _decayLengthCJetTrue;
363 
364 
405 
446 
449  std::vector< unsigned int> _cJet_truePlus2_angle;
450  std::vector< unsigned int> _cJet_truePlus_angle;
451  std::vector< unsigned int> _cJet_trueNeut_angle;
452  std::vector< unsigned int> _cJet_trueMinus_angle;
453  std::vector< unsigned int> _cJet_trueMinus2_angle;
454 
455  std::vector< unsigned int> _cJet_truePlus2_recoPlus_angle;
456  std::vector< unsigned int> _cJet_truePlus2_recoNeut_angle;
457  std::vector< unsigned int> _cJet_truePlus2_recoMinus_angle;
458  std::vector< unsigned int> _cJet_truePlus_recoPlus_angle;
459  std::vector< unsigned int> _cJet_truePlus_recoNeut_angle;
460  std::vector< unsigned int> _cJet_truePlus_recoMinus_angle;
461  std::vector< unsigned int> _cJet_trueNeut_recoPlus_angle;
462  std::vector< unsigned int> _cJet_trueNeut_recoNeut_angle;
463  std::vector< unsigned int> _cJet_trueNeut_recoMinus_angle;
464  std::vector< unsigned int> _cJet_trueMinus_recoPlus_angle;
465  std::vector< unsigned int> _cJet_trueMinus_recoNeut_angle;
466  std::vector< unsigned int> _cJet_trueMinus_recoMinus_angle;
467  std::vector< unsigned int> _cJet_trueMinus2_recoPlus_angle;
468  std::vector< unsigned int> _cJet_trueMinus2_recoNeut_angle;
469  std::vector< unsigned int> _cJet_trueMinus2_recoMinus_angle;
470 
471  std::vector< unsigned int> _bJet_truePlus2_angle;
472  std::vector< unsigned int> _bJet_truePlus_angle;
473  std::vector< unsigned int> _bJet_trueNeut_angle;
474  std::vector< unsigned int> _bJet_trueMinus_angle;
475  std::vector< unsigned int> _bJet_trueMinus2_angle;
476  std::vector< unsigned int> _bJet_truePlus2_recoPlus_angle;
477  std::vector< unsigned int> _bJet_truePlus2_recoNeut_angle;
478  std::vector< unsigned int> _bJet_truePlus2_recoMinus_angle;
479  std::vector< unsigned int> _bJet_truePlus_recoPlus_angle;
480  std::vector< unsigned int> _bJet_truePlus_recoNeut_angle;
481  std::vector< unsigned int> _bJet_truePlus_recoMinus_angle;
482  std::vector< unsigned int> _bJet_trueNeut_recoPlus_angle;
483  std::vector< unsigned int> _bJet_trueNeut_recoNeut_angle;
484  std::vector< unsigned int> _bJet_trueNeut_recoMinus_angle;
485  std::vector< unsigned int> _bJet_trueMinus_recoPlus_angle;
486  std::vector< unsigned int> _bJet_trueMinus_recoNeut_angle;
487  std::vector< unsigned int> _bJet_trueMinus_recoMinus_angle;
488  std::vector< unsigned int> _bJet_trueMinus2_recoPlus_angle;
489  std::vector< unsigned int> _bJet_trueMinus2_recoNeut_angle;
490  std::vector< unsigned int> _bJet_trueMinus2_recoMinus_angle;
491 
494  int _nb_twoVertex_bTrack_Secondary;
495  int _nb_twoVertex_bTrack_Tertiary;
496  int _nb_twoVertex_bTrack_Isolated;
497 
498  int _nb_twoVertex_cTrack_Primary;
499  int _nb_twoVertex_cTrack_Secondary;
500  int _nb_twoVertex_cTrack_Tertiary;
501  int _nb_twoVertex_cTrack_Isolated;
502 
503  int _nb_twoVertex_lTrack_Primary;
504  int _nb_twoVertex_lTrack_Secondary;
505  int _nb_twoVertex_lTrack_Tertiary;
506  int _nb_twoVertex_lTrack_Isolated;
507 
508  int _nb_threeVertex_bTrack_Primary;
509  int _nb_threeVertex_bTrack_Secondary;
510  int _nb_threeVertex_bTrack_Tertiary;
511  int _nb_threeVertex_bTrack_Isolated;
512 
513  int _nb_threeVertex_cTrack_Primary;
514  int _nb_threeVertex_cTrack_Secondary;
515  int _nb_threeVertex_cTrack_Tertiary;
516  int _nb_threeVertex_cTrack_Isolated;
517 
518  int _nb_threeVertex_lTrack_Primary;
519  int _nb_threeVertex_lTrack_Secondary;
520  int _nb_threeVertex_lTrack_Tertiary;
521  int _nb_threeVertex_lTrack_Isolated;
522 
523  int _nb_threeVertex_Primary_noMCP;
524  int _nb_threeVertex_Secondary_noMCP;
525  int _nb_threeVertex_Tertiary_noMCP;
526  int _nb_threeVertex_Isolated_noMCP;
527 
528  int _nb_twoVertex_Primary_noMCP;
529  int _nb_twoVertex_Secondary_noMCP;
530  int _nb_twoVertex_Tertiary_noMCP;
531  int _nb_twoVertex_Isolated_noMCP;
532 
533 
534  int _nc_twoVertex_bTrack_Primary;
535  int _nc_twoVertex_bTrack_Secondary;
536  int _nc_twoVertex_bTrack_Tertiary;
537  int _nc_twoVertex_bTrack_Isolated;
538 
539  int _nc_twoVertex_cTrack_Primary;
540  int _nc_twoVertex_cTrack_Secondary;
541  int _nc_twoVertex_cTrack_Tertiary;
542  int _nc_twoVertex_cTrack_Isolated;
543 
544  int _nc_twoVertex_lTrack_Primary;
545  int _nc_twoVertex_lTrack_Secondary;
546  int _nc_twoVertex_lTrack_Tertiary;
547  int _nc_twoVertex_lTrack_Isolated;
548 
549  int _nc_threeVertex_bTrack_Primary;
550  int _nc_threeVertex_bTrack_Secondary;
551  int _nc_threeVertex_bTrack_Tertiary;
552  int _nc_threeVertex_bTrack_Isolated;
553 
554  int _nc_threeVertex_cTrack_Primary;
555  int _nc_threeVertex_cTrack_Secondary;
556  int _nc_threeVertex_cTrack_Tertiary;
557  int _nc_threeVertex_cTrack_Isolated;
558 
559  int _nc_threeVertex_lTrack_Primary;
560  int _nc_threeVertex_lTrack_Secondary;
561  int _nc_threeVertex_lTrack_Tertiary;
562  int _nc_threeVertex_lTrack_Isolated;
563 
564  int _nc_threeVertex_Primary_noMCP;
565  int _nc_threeVertex_Secondary_noMCP;
566  int _nc_threeVertex_Tertiary_noMCP;
567  int _nc_threeVertex_Isolated_noMCP;
568 
569  int _nc_twoVertex_Primary_noMCP;
570  int _nc_twoVertex_Secondary_noMCP;
571  int _nc_twoVertex_Tertiary_noMCP;
572  int _nc_twoVertex_Isolated_noMCP;
573 
574 };
575 
576 #endif // endif for "ifndef LCFIAIDAPlotProcessor_h"
int _bJet_trueNeut_recoPlus
numbers of true B-jets with true charge 0; reconstructed vertex charge >0
int FindCQVtx(LCEvent *pEvent, unsigned int jetNumber)
Finds the vertex charge of the jet - using cuts tuned to find vertex charge for C-jets (from CVertexC...
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pCJetBCTag
Histograms of the neural net BC-tag outputs for true C-jets - seperately for different number of vert...
int _bJet_truePlus_recoNeut
numbers of true B-jets with true charge +; reconstructed vertex charge =0
AIDA::IDataPointSet * CreateIntegralPlot(const AIDA::IHistogram1D *pNN, AIDA::IDataPointSet *pIntegral)
Makes a DataPointSet integrating a histogram from the first bin to the last bin – NOT USED...
int _cJet_trueMinus_recoPlus
numbers of true C-jets with true charge -; reconstructed vertex charge >0
void FindTrueJetDecayLength(LCEvent *pEvent, unsigned int jetNumber, std::vector< double > &decaylengthvector, std::vector< double > &bjetdecaylengthvector, std::vector< double > &cjetdecaylengthvector)
Finds the true decay length of the longest b- or c- hadron in a jet.
int _bJet_trueNeut_recoMinus
numbers of true B-jets with true charge 0; reconstructed vertex charge <0
AIDA::IDataPointSet * CreateXYPlot(const AIDA::IDataPointSet *pDataPointSet0, const AIDA::IDataPointSet *pDataPointSet1, AIDA::IDataPointSet *xyPointSet, const int dim0=0, const int dim1=0)
Plots two DataPointSets against each other.
int _cJet_trueMinus
numbers of true C-jets with true charge -
double _PJetMax
cuts on all jets
int _bJet_trueMinus
numbers of true B-jets with true charge -
int _cJet_trueMinus2
numbers of true C-jets with true charge –
int FindTrueJetFlavour(LCEvent *pEvent, unsigned int jetNumber)
Finds the true flavour of the jet (uses TrueJetFlavourCollection)
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pBCTagBackgroundValues
Histograms of the neural net BC-tag outputs for non C-jets - seperately for different number of verti...
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pLightJetBCTag
Histograms of the neural net BC-tag outputs for true light-jets - seperately for different number of ...
AIDA::IDataPointSet * CreateEfficiencyPlot(const AIDA::IHistogram1D *pSignal, AIDA::IDataPointSet *pDataPointSet)
Makes a DataPointSet of the tag efficiency e.g number of B-jets passing a given B-tag NN cut...
int _nb_twoVertex_bTrack_Primary
Numbers for purity if reconstructed track-vertex association.
int _bJet_trueMinus_recoNeut
numbers of true B-jets with true charge -; reconstructed vertex charge =0
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _inputsHistogramsUDSJets
Histograms of the neural net inputs for light B-jets.
int _bJet_trueNeut_recoNeut
numbers of true B-jets with true charge 0; reconstructed vertex charge =0
int FindNumVertex(LCEvent *pEvent, unsigned int jetNumber, unsigned int iInputsCollection)
Finds the number of vertices in an event (from the flavour tag inputs)
int _cJet_truePlus2
numbers of true C-jets with true charge ++
static const int N_JETANGLE_BINS
number of bins used in vertex charge leakage plots
int _cJet_truePlus2_recoPlus
numbers of true C-jets with true charge ++; reconstructed vertex charge >0
int _cJet_trueMinus_recoMinus
numbers of true C-jets with true charge -; reconstructed vertex charge <0
int _cJet_trueNeut_recoNeut
numbers of true C-jets with true charge 0; reconstructed vertex charge =0
int _numberOfPoints
Number of bins used for neural nets plots.
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pCJetBTag
Histograms of the neural net B-tag outputs for true C-jets - seperately for different number of verti...
int _cJet_trueNeut_recoMinus
numbers of true C-jets with true charge 0; reconstructed vertex charge <0
AIDA::IHistogram1D * _pBJetVertexCharge
True B-jets - vertex charge.
int _cJet_truePlus2_recoNeut
numbers of true C-jets with true charge ++; reconstructed vertex charge =0
int _cJet_trueMinus2_recoPlus
numbers of true C-jets with true charge –; reconstructed vertex charge >0
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _zoomedInputsHistogramsCJets
Zoomed-in histograms of some of the neural net inputs for true C-jets.
AIDA::IDataPointSet * CreatePurityPlot(const AIDA::IHistogram1D *pSignal, const AIDA::IHistogram1D *pBackground, AIDA::IDataPointSet *pDataPointSet)
Makes a DataPointSet of the tag purity e.g. N(B-jets passing NN cut)/N(all-jets passing NN cut) for a...
AIDA::IHistogram2D * _pCJetCharge2D
True C-jets - vertex charge vs true charge.
int _bJet_truePlus2_recoPlus
numbers of true B-jets with true charge ++; reconstructed vertex charge >0
int FindBQVtx(LCEvent *pEvent, unsigned int jetNumber)
Finds the vertex charge of the jet - using cuts tuned to find vertex charge for B-jets (from BVertexC...
float FindTrueJetPartonCharge(LCEvent *pEvent, unsigned int jetNumber)
Finds the true charge of the parton producing a jet (uses TrueJetFlavourCollection) ...
double _BTagNNCut
Cut on the NN output variables - applied in vertex charge plots.
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _inputsHistogramsBJets
Histograms of the neural net inputs for true B-jets.
AIDA::IHistogram1D * _pCJetLeakageRate
True C-jets - vertex charge leakage rate.
int _bJet_truePlus_recoMinus
numbers of true B-jets with true charge +; reconstructed vertex charge <0
int _cJet_trueMinus2_recoMinus
numbers of true C-jets with true charge –; reconstructed vertex charge <0
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _inputsHistogramsCJets
Histograms of the neural net inputs for true C-jets.
int _cJet_trueMinus2_recoNeut
numbers of true C-jets with true charge –; reconstructed vertex charge =0
double _CosThetaJetMax
cuts on all jets
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _zoomedInputsHistogramsUDSJets
Zoomed-in histograms of some of the neural net inputs for true light-jets.
AIDA::IDataPointSet * CreateEfficiencyPlot2(const AIDA::IHistogram1D *pAllEvents, const AIDA::IHistogram1D *pPassEvents, AIDA::IDataPointSet *pDataPointSet)
Makes a DataPointSet of histogram 1 divide by histogram 2 - this is an IDataPointSet as a histrogram ...
double _CosThetaJetMin
cuts on all jets
double _CTagNNCut
Cut on the NN output variables - applied in vertex charge plots.
int _bJet_trueMinus2_recoPlus
numbers of true B-jets with true charge –; reconstructed vertex charge >0
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pLightJetCTag
Histograms of the neural net C-tag outputs for true light-jets - seperately for different number of v...
int _bJet_trueMinus2
numbers of true B-jets with true charge –
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pBJetBCTag
Histograms of the neural net BC-tag outputs for true B-jets - seperately for different number of vert...
int _cJet_trueNeut_recoPlus
numbers of true C-jets with true charge 0; reconstructed vertex charge >0
AIDA::IDataPointSet * CreateLeakageRatePlot(const AIDA::IHistogram1D *pBackground, AIDA::IDataPointSet *pDataPointSet)
Makes a DataPointSet showing the tagging leakage e.g. the number of non-B-jets passing a given B-tag ...
int _cJet_truePlus_recoMinus
numbers of true C-jets with true charge +; reconstructed vertex charge <0
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pBJetBTagIntegral
Histograms of the neural net tags - number of events that pass a given cut: jet NN value > given NN v...
AIDA::IHistogram1D * CreateIntegralHistogram(const AIDA::IHistogram1D *pNN, AIDA::IHistogram1D *pIntegral)
Makes a histogram integrating a histogram from the first bin to the last bin - THE ERRORS RETURNED AR...
std::vector< unsigned int > _cJet_truePlus2_angle
Vector of numbers of true C-jets with true charge ++ See above for details.
int _bJet_trueNeut
numbers of true B-jets with true charge 0
int _cJet_truePlus_recoNeut
numbers of true C-jets with true charge +; reconstructed vertex charge =0
static const unsigned int N_VERTEX_CATEGORIES
number of different vertex categories we want to look at: 1 vertex, 2 vertices, >=3 vertices ...
int FindTrueJetPDGCode(LCEvent *pEvent, unsigned int jetNumber)
Finds the PDG code of the hadron producing a jet (uses TrueJetFlavourCollection)
bool _PrintTrackVertexOutput
optional parameters to make an ntuple of the neural net inputs; and print out the tagging ouputs (use...
std::vector< std::string > _FlavourTagCollectionNames
required input collections
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pBTagBackgroundValues
Histograms of the neural net B-tag outputs for non B-jets - seperately for different number of vertic...
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pBJetBTag
Histograms of the neural net B-tag outputs for true B-jets - seperately for different number of verti...
int _bJet_truePlus2
numbers of true B-jets with true charge ++
int FindTrueJetType(LCEvent *pEvent, unsigned int jetNumber)
Finds the true flavour of a jet (uses TrueJetFlavourCollection)
int _cJet_truePlus_recoPlus
numbers of true C-jets with true charge +; reconstructed vertex charge >0
LCFIAIDAPlotProcessor Class - make plots of the LCFI flavour tag and vertex charge code...
AIDA::ITuple * _pMyTuple
Tuple of the input variables - only filled for one input collection - selected with UseFlavourTagColl...
int _bJet_trueMinus_recoMinus
numbers of true B-jets with true charge -; reconstructed vertex charge <0
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pLightJetBTag
Histograms of the neural net B-tag outputs for true light-jets - seperately for different number of v...
AIDA::IHistogram1D * _pBJetLeakageRate
True B-jets - vertex charge leakage rate.
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pBJetCTag
Histograms of the neural net C-tag outputs for true B-jets - seperately for different number of verti...
int _cJet_truePlus
numbers of true C-jets with true charge +
AIDA::IHistogram2D * _pBJetCharge2D
True B-jets - vertex charge vs true charge.
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _zoomedInputsHistogramsBJets
Zoomed-in histograms of some of the neural net inputs for true B-jets.
int _cJet_truePlus2_recoMinus
numbers of true C-jets with true charge ++; reconstructed vertex charge <0
int _bJet_truePlus
numbers of true B-jets with true charge +
int _cJet_trueNeut
numbers of true C-jets with true charge 0
int _bJet_trueMinus2_recoNeut
numbers of true B-jets with true charge –; reconstructed vertex charge =0
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pCJetCTag
Histograms of the neural net C-tag outputs for true C-jets - seperately for different number of verti...
std::vector< std::map< std::string, AIDA::IHistogram1D * > > _pCTagBackgroundValues
Histograms of the neural net C-tag outputs for non C-jets - seperately for different number of vertic...
int _bJet_truePlus2_recoNeut
numbers of true B-jets with true charge ++; reconstructed vertex charge =0
int _bJet_trueMinus_recoPlus
numbers of true B-jets with true charge -; reconstructed vertex charge >0
void CreateVertexChargeLeakagePlot(AIDA::IDataPointSet *pBJetVtxChargeDPS, AIDA::IDataPointSet *pCJetVtxChargeDPS)
Makes DataPointSets for the number of.
float FindTrueJetHadronCharge(LCEvent *pEvent, unsigned int jetNumber)
Finds the true charge of the hadron producing a jet (uses TrueJetFlavourCollection) ...
int _bJet_truePlus_recoPlus
numbers of true B-jets with true charge +; reconstructed vertex charge >0
int _bJet_trueMinus2_recoMinus
numbers of true B-jets with true charge –; reconstructed vertex charge <0
double _PJetMin
cuts on all jets
AIDA::IHistogram1D * _pCJetVertexCharge
True C-jets - vertex charge.
int _bJet_truePlus2_recoMinus
numbers of true B-jets with true charge ++; reconstructed vertex charge <0
int _cJet_trueMinus_recoNeut
numbers of true C-jets with true charge -; reconstructed vertex charge =0