This file is indexed.

/usr/include/BALL/MOLMEC/MMFF94/MMFF94StretchBend.h is in libball1.4-dev 1.4.3~beta1-4.

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
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: MMFF94StretchBend.h,v 1.1.8.1 2007/03/25 21:25:18 oliver Exp $
//

#ifndef BALL_MOLMEC_MMFF94_MMFF94STRETCHBEND_H
#define BALL_MOLMEC_MMFF94_MMFF94STRETCHBEND_H

#ifndef BALL_MOLMEC_COMMON_FORCEFIELDCOMPONENT_H
#	include <BALL/MOLMEC/COMMON/forceFieldComponent.h>
#endif

#ifndef BALL_MOLMEC_MMFF94_MMFF94PARAMETERS_H
#	include <BALL/MOLMEC/MMFF94/MMFF94Parameters.h>
#endif

namespace BALL 
{
	class MMFF94;

	/**	MMFF94 bond stretch component
    	\ingroup  MMFF94
	*/
	class BALL_EXPORT MMFF94StretchBend 
		: public ForceFieldComponent
	{
		public:

		struct BALL_EXPORT StretchBend
		{
			double kba_ijk;
			double kba_kji;
			double energy; // debug
			Index sbtijk; 
			Index stretch_i_j, stretch_j_k;
			Index bend_index;
		};

		/// see MMFFANG.PAR
		struct BALL_EXPORT Bend
		{
			Bend();

			double theta0;
			double delta_theta;
			double theta;
			double ka;
			Atom*	atom1;
			Atom*	atom2;
			Atom*	atom3;
			bool is_linear;
			Position ATIJK;
			double energy;  // debug
			bool emperical; // debug
			TVector3<double> n1, n2;
		};
		
		///
		struct BALL_EXPORT Stretch
		{
			Atom* atom1;
			Atom* atom2;
			double kb;
			double r0;
			double delta_r;
			bool  sbmb; 
			bool  emperical;
			Vector3 n;
		};

		/// flag to enable BENDS
		#define MMFF94_BENDS_ENABLED "enable Bends"
		
		/// flag to enable Stretches
		#define MMFF94_STRETCHES_ENABLED "enable Stretches"

		/// flag to enable StretchBends
		#define MMFF94_STRETCHBENDS_ENABLED "enable StrechBends"

		BALL_CREATE(MMFF94StretchBend)

		/**	Default constructor.
		*/
		MMFF94StretchBend();

		/**	Constructor.
		*/
		MMFF94StretchBend(ForceField& force_field);

		/**	Copy constructor
		*/
		MMFF94StretchBend(const MMFF94StretchBend& to_copy);

		/**	Destructor.
		*/
		virtual ~MMFF94StretchBend();

		/**	Setup method.
		*/
		virtual bool setup()
			throw(Exception::TooManyErrors);

		///	Calculates and returns the component's energy.
		virtual double updateEnergy();

		///
		virtual double updateBendEnergy();
		
		///
		virtual double updateStretchEnergy();

		///
		virtual double updateStretchBendEnergy();

		///
		double getStretchEnergy() const;

		///
		double getBendEnergy() const;

		///
		double getStretchBendEnergy() const;

		/// Calculates and returns the component's forces.
		virtual void updateForces();

		///
		virtual void updateBendForces();

		///
		virtual void updateStretchForces();

		///
		virtual void updateStretchBendForces();

		///
		const vector<Bend>& getBends() const { return bends_;}
		
		///
		const vector<Stretch>& getStretches() const { return stretches_;}

		///
		const vector<StretchBend>& getStretchBends() const { return stretch_bends_;}
		
		///
		Index calculateSBTIJK(Position angle_type, 
													bool bond_type1,
													bool bond_type2);
		
		///
		Position getBendType(const Bond& bond1, const Bond& bond2,
										 		 Atom& atom1, Atom& atom2, Atom& atom3) const;
		
		/// Bend emperical reference angle
		double calculateBendEmpiricalReferenceAngle(Atom& atom1, Atom& atom2, Atom& atom3) const;
		
		/// Bend emperical force constant
		double calculateBendEmpiricalForceConstant(Atom& atom1, Atom& atom2, Atom& atom3, double angle_0) const;

		/// Calculate the radius value per Schomaker-Stevenson Rule
		double calculateStretchR0(const Bond& bond);

		///
		double calculateStretchConstant(const Bond& bond, double r0);

		private:

		inline void AddDV3_(Vector3& f3, const TVector3<double> d3);
		void calculateDeltas_();
		bool setupBends_();
		bool setupStretches_();
		bool setupStretchBends_();
		
		void errorOccured_(const String& string, 
											 const Atom& a1, const Atom& a2, const Atom& a3);

		vector<Bend> bends_;
		vector<Stretch> stretches_;
		vector<StretchBend> stretch_bends_;

		const MMFF94StretchParameters* stretch_parameters_;
		MMFF94BendParameters bend_parameters_;
 		MMFF94StretchBendParameters sb_parameters_;

		static double bend_z_[];
		static double bend_c_[];
		static String bend_elements_[];

		double stretch_energy_;
		double bend_energy_;
		double stretch_bend_energy_;

		MMFF94* mmff94_;
		bool stretch_enabled_, bend_enabled_, stretchbend_enabled_;
	};
} // namespace BALL

#endif // BALL_MOLMEC_MMFF94_MMFF94STRETCHBEND_H