This file is indexed.

/usr/include/root/Roo2DMomentMorphFunction.h is in libroot-roofit-dev 5.34.00-2.

This file is owned by root:root, with mode 0o644.

The actual contents of the file can be viewed below.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
/*****************************************************************************
 * Project: RooFit                                                           *
 * author: Max Baak (mbaak@cern.ch)                                          *
 *****************************************************************************/

// Written by Max Baak (mbaak@cern.ch)
// 2-dimensional morph function between a list of input functions (varlist) as a function of one input parameter (m).
// The vector mrefpoints assigns an m-number to each function in the function list.
// For example: varlist can contain MC histograms (or single numbers) of a reconstructed mass, for certain 
// true Higgs masses indicated in mrefpoints. the input parameter m is the true (continous) Higgs mass.
// Morphing can be set to be linear or non-linear, or mixture of the two.

#ifndef ROO2DMOMENTMORPHFUNCTION
#define ROO2DMOMENTMORPHFUNCTION

#include "RooAbsReal.h"
#include "RooRealProxy.h"
#include "RooCategoryProxy.h"
#include "RooAbsReal.h"
#include "RooAbsCategory.h"

#include "TMatrix.h"
#include "TVectorD.h"

#include <vector>
#include <string>

class Roo2DMomentMorphFunction : public RooAbsReal {

 public:

  enum Setting { Linear, LinearPosFractions } ;

  Roo2DMomentMorphFunction() {} ; 

  Roo2DMomentMorphFunction( const char *name, const char *title,
	                  RooAbsReal& _m1, RooAbsReal& _m2, 
                          const TMatrixD& mrefpoints, const Setting& setting = Linear, const Bool_t& verbose=false ) ;

  Roo2DMomentMorphFunction( const char *name, const char *title,
                          RooAbsReal& _m1, RooAbsReal& _m2,
                          const Int_t& nrows, const Double_t* dm1arr, const Double_t* dm2arr, const Double_t* dvalarr, 
			  const Setting& setting = Linear, const Bool_t& verbose=false ) ;

  Roo2DMomentMorphFunction( const Roo2DMomentMorphFunction& other, const char* name=0 );

  virtual TObject* clone( const char* newname ) const { return new Roo2DMomentMorphFunction(*this,newname); }
  virtual ~Roo2DMomentMorphFunction() ;

  void setMode( const Setting& setting ) { _setting=setting; }

  void Summary() const;

 protected:

  Double_t evaluate() const ;

  void     initialize();
  void     calculateFractions(Bool_t verbose=kTRUE) const;

  RooRealProxy m1 ;
  RooRealProxy m2 ;

  Setting _setting;
  Bool_t _verbose;
  Int_t _ixmin, _ixmax, _iymin, _iymax;
  Int_t	_npoints;

  mutable TMatrixD _mref;
  mutable TMatrixD _MSqr;
  mutable TVectorD _frac;

  mutable TMatrixD _squareVec;
  mutable int _squareIdx[4];

 private:

  Bool_t   findSquare(const double& x, const double& y) const;
  Bool_t   onSameSide(const double& p1x, const double& p1y, const double& p2x, const double& p2y, const double& ax, const double& ay, const double& bx, const double& by) const ;
  Bool_t   pointInSquare(const double& px, const double& py, const double& ax, const double& ay, const double& bx, const double& by, const double& cx, const double& cy, const double& dx, const double& dy) const;
  Bool_t   pointInTriangle(const double& px, const double& py, const double& ax, const double& ay, const double& bx, const double& by, const double& cx, const double& cy) const ;
  Double_t myCrossProduct(const double& ax, const double& ay, const double& bx, const double& by) const ;
  Bool_t   isAcceptableSquare(const double& ax, const double& ay, const double& bx, const double& by, const double& cx, const double& cy, const double& dx, const double& dy) const;

  struct SorterL2H {
    bool operator() (const std::pair<int,double>& p1, const std::pair<int,double>& p2) {
      return (p1.second<p2.second);
    }
  };

 private:
  ClassDef(Roo2DMomentMorphFunction,1) 

};
 
#endif