Performance: Single FF calculation for duplicate particles in ParticleComposition
While it's hard for me to follow, how exactly the FF of a ParticleComposition is calculated in BA it seems that for each particle that is added a unique copy of the FF is generated and then translated to its position in the composite. This means that, in addition to the necessary phase factor for the translation, the particle FF has to calculated for each instance. Therefore the calculation time grows linearly with the number of particles.
I propose to use the additional knowledge of equal FFs when the user calls addParticles instead of addParticle by only calculating the FF of the particle at given location once and then calculate the individual phase factors per particle. This will speed up the calculation significantly for larger number of composites and complex FF calculations.