This file is indexed.

/usr/include/BALL/NMR/EFShiftProcessor.h is in libball1.4-dev 1.4.3~beta1-3.

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
// -*- Mode: C++; tab-width: 2; -*-
// vi: set ts=2:
//
// $Id: EFShiftProcessor.h,v 1.23.10.5 2007-04-12 13:53:52 anne Exp $
//

#ifndef BALL_NMR_EFSHIFTPROCESSOR_H
#define BALL_NMR_EFSHIFTPROCESSOR_H

#ifndef BALL_NMR_SHIFT_MODULE_H
#	include<BALL/NMR/shiftModule.h>
#endif

#ifndef BALL_KERNEL_EXPRESSION_H
#	include<BALL/KERNEL/expression.h>
#endif

namespace BALL 
{
	class Atom;
		
	/**	Shift assignment processor implementing the electric field effect. 
	\ingroup ShiftModulesNMR		
	*/
	class BALL_EXPORT EFShiftProcessor
		:	public ShiftModule
	{
		public:

		BALL_CREATE(EFShiftProcessor)

		/**	@name Enums and Constants
		*/
		//@{

		/**	A symbolic name for the electric field contribution to the chemical shift.
				@see ShiftModule::PROPERTY__SHIFT
		*/
		static const char* PROPERTY__EF_SHIFT;
		
		//@}
		/** @name	Constructors and Destructors.
		*/
		//@{

		/**	Default constructor.
		*/
		EFShiftProcessor()
			;
	
		/**	Copy constructor.
		*/
		EFShiftProcessor(const EFShiftProcessor& processor)
			;
			
		/**	Destructor.
		*/
		virtual ~EFShiftProcessor()
			;	

		//@}
		/**	@name	Accessors.
		*/
		//@{

		/**	Initialization method.
				This method reads the parameter section <b>ElectricFieldEffect</b> and
				parses its contents.
				This section contains four flags: 
				- $\var exclude_residue_field$ / $varexclude_adjacent_residue_field$ denotes, whether 
				effector atoms of the electric 
				field effect will be excluded, if the target bond is in the same residue, an adjacent 
				residue respectively. The defaults are false.
				- $var carbonyl_influences_amide_field$ denotes, whether a carbonyl is regarded to 
					effect the shift of an amid hydrogen. The default is false.
				- $var exclude_solvent_field$ denotes, whether water molecules are excluded to be
					effectors. The default is false.
				This section contains the definition of two expressions that define
				a bond (the first expression matches the atom whose shift is to be
				calculated, the second describes its bond partner).
				For each of these bonds, two parameters are given, 
				$\varepsilon_1$ and	$\varepsilon_2$.  \par
				Then, this method extracts the contents of the <b>Charges</b>
				section and thus constructs a hash map containing residue and atom names 
				and the corresponding charges.
				The \link operator () operator () \endlink is applied to all atoms,   
				so expect the atom charges to change!
				@see operator ()
		*/
		virtual void init()
			;

		//@}
		/**	@name	Processor specific functions.
		*/
		//@{
		
		/**	Processor start method.
				This method clears the bond and effector list.
				It fails if no parameters were assigned.
				@return bool, <b>false</b> if <tt>parameters_ == 0</tt>
		*/
		virtual bool start()
			;


		/**	Processor operator ().
				This method sets the charges for all atoms it encounters.
				The charges are given are given in parameter file (section <b>Charges</b>).
				Charged atoms	are stored in the atom list  \link effector_list_ effector_list_ \endlink .
				All tentative target bonds, specified in the parameter file (section <b>ElectricFieldEffect</b>), 
				are stored in  \link bond_list_ bond_list_ \endlink .
				@return Processor::CONTINUE
		*/
		virtual Processor::Result operator () (Composite& composite)
			;

		/**	Processor finish method.
				This method performs the chemical shift calculation.
				It iterates over all bonds stored in  \link bond_list_ bond_list_ \endlink .
				If the two bond atoms match a pair of expressions from
				 \link first_atom_expressions_ first_atom_expressions_ \endlink  and  
				 \link second_atom_expressions_ second_atom_expressions_ \endlink ,
				the electric field vector is calculated at the bond position using
				Coulomb's law and the charges and positions of the atoms in the 
				 \link effector_list_ effector_list_ \endlink .
				The chemical shift induced by the electric field effect is calculated as
					$\delta_{EF} = \varepsilon_1 * E_z + \varepsilon_2 * E^2 $
				where constants $\varepsilon_1$ and $\varepsilon_2$ are read
				from the parameter file (section <b>ElectricFieldEffect</b>).
				The chemical shift is stored in the \emph{first} atom
				using the named property  \link ShiftModule::PROPERTY__SHIFT ShiftModule::PROPERTY__SHIFT \endlink  
				and in the named property  \link PROPERTY__EF_SHIFT PROPERTY__EF_SHIFT \endlink .
				@return bool, <b>false</b> if <tt>parameters_ == 0</tt>
		*/
		virtual bool finish()
			;
			
		//@}

		protected:
	
		/*_	The list of all target bonds collected by {\tt operator ()}.
		* 	The first element of the pair is the origin of the bond, the second the destination.
		* 	The shift _always_ applies to the first element of the pair.
		*/
		std::vector<std::pair<Atom*, Atom*> >				bond_list_;

		/*_  The index of the expression that matched to result in the corresponding element in bond_list_
		 */
		std::vector<Index> 			expression_number_;

		/*_	The list of charged atoms (effectors).
		*/
		std::list<Atom*>				effector_list_;

		/*_	The expressions describing the first atom of a bond.
		*/
		std::vector<Expression>	first_atom_expressions_;

		/*_	The expressions describing the first atom of a bond.
		*/
		std::vector<Expression>	second_atom_expressions_;

		/*_	The parameter $\varepsilon_1$.
		*/
		std::vector<float>			epsilon1_;

		/*_	The parameter $\varepsilon_2$.
		*/
		std::vector<float>			epsilon2_;

		/*_	The charge assignment map.
		*/
		StringHashMap<float>		charge_map_;

		/*_	A flag indicating whether effectors in the same residues are to be considered.
				Set this flag by specifying the option {\tt exclude_residue_field = true} in 
				the ElectricFieldShift section of the parameter file.
				Default is false.
		*/
		bool										exclude_residue_field_;
		
		/*_	A flag indicating whether effectors in adjacent residues are to be considered.
				Set this flag by specifying the option {\tt exclude_adjacent_residue_field = true} in 
				the ElectricFieldShift section of the parameter file.
				Default is false.
		*/
		bool 										exclude_adjacent_residue_field_;
		
		/*_	A flag indicating whether carbonyl effectors are to be considered for amid targets.
				Set this flag by specifying the option {\tt carbonyl_influences_amide_field = false} in 
				the ElectricFieldShift section of the parameter file.
				Default is false.
		*/
		bool										carbonyl_influences_amide_field_;
		
		
		/*_	A flag indicating whether solvent atoms do act as effectors.
				Set this flag by specifying the option {\tt exclude exclude_solvent_field = true} in 
				the ElectricFieldShift section of the parameter file.
				Default is false.
		*/
		bool										exclude_solvent_field_;


		
		/*_	A cut off value for the electric field effect.
				Any effector that is further away than this cut off is ignored.
				The distance is read from the option {\tt cut_off} in the 
				section <TT>  ElectricFieldEffect </TT> from the parameter file.
				This member contains the squared value(!) of the distance.
		*/
		float										cut_off2_;


		/*_	A factor for switching the charge unit between esu and elementary charges. 
		 		The unit is read from the option {\tt unit} of the section 
				<TT>  Charges </TT> from the parameter file.
				For numeric aspects, in the init() function the esu unit is divided by 
				the charge_factor_, such that the molecules charges (which are given 
				by PDB.org in elementary units) can easily be multiplied with. 
				When computing the shift, the charge_factor is again multiplied with.  
				Default is 1.0
		*/

		float  									charge_factor_;
		
		private:
	
		/*_ Some debugging functions printing parameter/effector/target information
		 *  to the Log-stream.
		 */
		void 			printParameters_();
		void  		printEffectors_();
		void 			printTargets_();
		
		/*_ A function to perform some ShiftX-y postprocessing: 
		    add for all CA-atoms 0.2 times the EF-shift-value of the bound HA-atoms 
	  */
		void 			postprocessing_();

 	};
  
} // namespace BALL

#endif // BALL_NMR_EFSHIFTPROCESSOR_H