This file is indexed.

/usr/include/BALL/MOLMEC/COMMON/periodicBoundary.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
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: periodicBoundary.h,v 1.22 2005/12/23 17:01:51 amoll Exp $
//

#ifndef BALL_MOLMEC_COMMON_PERIODICBOUNDARY_H
#define BALL_MOLMEC_COMMON_PERIODICBOUNDARY_H

#ifndef BALL_COMMON_H
#	include <BALL/common.h>
#endif

#ifndef BALL_DATATYPE_OPTIONS_H
#	include <BALL/DATATYPE/options.h>
#endif

#ifndef BALL_MATHS_SIMPLEBOX3_H
#	include <BALL/MATHS/simpleBox3.h>
#endif

namespace BALL 
{
	class ForceField;

	class PeriodicBoundary;

	/**	Periodic boundary class for force field simulations. 
			Molecular Mechanics: class representing periodic boundary conditions.
			 \par
			
    	\ingroup  MolmecCommon
	*/
	class BALL_EXPORT PeriodicBoundary
	{
		public:

		BALL_CREATE(PeriodicBoundary)

		/**	@name	Type definitions 
		*/
		//@{
		
		///
		typedef	std::pair<Size, Size>				AtomIndexPair;

		///
		typedef std::vector<AtomIndexPair>		AtomIndexArray;

		//@}		
		/**	@name	Constants used as option keys
		*/
		//@{

		///
		struct BALL_EXPORT Option 
		{
			///	Vector containing the lower corner of the box
			static const char* PERIODIC_BOX_LOWER;

			///	Vector containing the upper corner of the box
			static const char* PERIODIC_BOX_UPPER;

			///	 Bool that indicates whether periodic boundary is enabled or not 
			static const char* PERIODIC_BOX_ENABLED;
		
			///	Minimum distance between solute molecules and the box in Angstrom
			static const char* PERIODIC_BOX_DISTANCE;
			
			///	Flag to initiate the addition of solvent to the box
			static const char* PERIODIC_BOX_ADD_SOLVENT;
			
			/** Name of the file containing the solvent.
					This file should contain an equilibrated box of the solvent
					in the HyperChem format.
			*/
			static const char* PERIODIC_BOX_SOLVENT_FILE;

			/**	Minimum distance between solvent and solute for added solvent.
			*/
			static const char* PERIODIC_BOX_SOLVENT_SOLUTE_DISTANCE;

			/**	Filename for the default solvent.
			*/
			static const char* PERIODIC_WATER_FILE;

			};
		
		/// Default values
		struct BALL_EXPORT Default 
		{
			///	Default vector for the lower corner of the box
			static const Vector3 PERIODIC_BOX_LOWER; 

			///	Default vector for the upper corner of the box
			static const Vector3 PERIODIC_BOX_UPPER;

			///	Default bool value for periodic boundary (enabled or not)
			static const bool PERIODIC_BOX_ENABLED;

			///	Default minimum distance between solute molecules and the box in Angstrom
			static const float PERIODIC_BOX_DISTANCE;

			///	Default value of the flag to initiate the addition of solvent to the box
			static const bool PERIODIC_BOX_ADD_SOLVENT;

			/**	Default file for adding solvent molecules into the box.
					This file should contain an equilibrated box of the solvent
					in the HyperChem format.
			*/
			static const char* PERIODIC_BOX_SOLVENT_FILE;

			///	Default minimum distance between solvent and solute for added solvent.
			static const float PERIODIC_BOX_SOLVENT_SOLUTE_DISTANCE;

			///	Default file for default solvent.
			static const char* PERIODIC_WATER_FILE;
		};

		//@}
		/**	@name	Constructors and Destructors	
		*/
		//@{

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

		/**	Constructor.
		*/
		PeriodicBoundary(const ForceField& force_field);

		/**	Copy constructor
		*/
		PeriodicBoundary(const PeriodicBoundary& periodic_boundary);

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

		//@}
		/**	@name	Assignment
		*/
		//@{
			
		/**	Assignment operator.
		*/
		PeriodicBoundary& operator = (const PeriodicBoundary& periodic_boundary);

		/**	Clear method
		*/
		virtual void clear();

		//@}
		/**	@name	Setup Methods 
		*/
		//@{

		/**	Sets up the periodic box
		*/
		bool setup();

		/**	Generate the vector of molecules of the system
		*/
		Size	generateMoleculesVector();

		//@}
		/**	@name	Accessors 
		*/
		//@{
		
		/// Enable periodic boundary conditions
		void enable();

		/// Disable periodic boundary conditions
		void disable();

		/**	Retrieve the box dimensions.
		*/
		SimpleBox3 getBox() const; 

		/**	Set the box dimensions.
				The box dimensions are additionally stored in options
				using keys  \link lower lower \endlink  and  \link upper upper \endlink .
		*/
		void setBox(const SimpleBox3& box);

		/** Fill the defined box with a solvent.
				This method fills the defined box with solvent molecules.
				If no box is defined, no solvent is added. The neccessary
				solvent box template is either taken from the options (solvent_file)
				or a default is assumed. \par
				This method replicates the solvent box starting at the box origin in
				all three dimensions and removes all solvent molecules that are within 
				 \link solvent_distance solvent_distance \endlink  of a solute molecule 
				or outside the periodic box. \par
				To ensure periodicity, our SimpleBox instance might be resized to an integral
				multiple of the spacing of the periodic solvent box.
				The method returns the number of inserted solvent molecules. All solvent 
				molecules are marked as such by setting their property  
				\link Molecule::PROPERTY__PERIODIC_BOX_SOLVENT Molecule::PROPERTY__PERIODIC_BOX_SOLVENT \endlink . \par
				@see	removeSolvent
		*/
		Size addSolvent(const String& filename);
		
		/**	Removes all solvent molecules
				This method removes all molecules that have the property  \link Molecule::PROPERTY__PERIODIC_BOX_SOLVENT Molecule::PROPERTY__PERIODIC_BOX_SOLVENT \endlink 
				set from the force field's system.
				The number of removed solvent molecules is returned.
				@see	addSolvent
		*/
		Size removeSolvent();

		//@}
		/**	@name	Predicates	
		*/
		//@{
			
		/**	Returns <b>true</b> if the periodic boundary is enabled
				@see	enable
				@see	disable
		*/
		bool isEnabled() const;

		//@}
		/**	@name Periodic boundary methods 
		*/
		//@{
		
		/**	Checks which molecules are inside the box.
				If the center of mass of a molecule leaves the box, 
				it is inserted on the other side.
		*/
		void updateMolecules();

		//@}
		/**	@name	Variables
		*/
		//@{
		
		/**	Periodic Boundary options.
				This is usually a pointer to the options of the force field the PeriodicBoundary object 
				is contained in.
		*/
		Options*	options;

		//@}

		protected:

		private:

		/*_	@name Private Attributes	
		*/
		//_@{

		//_ Pointer to the force field of the periodic boundary 
		ForceField*	force_field_;

		//_ Indicates if periodic boundary is enabled or not 
		bool		enabled_;

		//_ The box of the periodic boundary 
		SimpleBox3		box_;

		//_ An pair vector with the start and end indices of all molecules (atoms of the molecules)
		AtomIndexArray	molecules_;

		//_@}

	};

} // namespace BALL

#endif // BALL_MOLMEC_COMMON_PERIODICBOUNDARY_H