Changeset 3655 in Sophya for trunk/AddOn


Ignore:
Timestamp:
Sep 8, 2009, 11:50:59 PM (16 years ago)
Author:
ansari
Message:

Ajout calcul spectre moyenne et sigma das BRProcARaw2C, Reza 08/09/2009

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/AddOn/TAcq/brproc.cc

    r3652 r3655  
    1313#include "histos.h"
    1414#include "fioarr.h"
     15#include "matharr.h"
    1516#include "timestamp.h"
    1617#include "ctimer.h"
     
    116117    TVector<r_4> spectreV1(cfour1.Size());
    117118    TVector<r_4> spectreV2(cfour1.Size());
     119    TVector<r_4> moyspecV1(cfour1.Size());   // Moyenne des Spectres
     120    TVector<r_4> moyspecV2(cfour1.Size());
     121    TVector<r_4> sigspecV1(cfour1.Size());   // Sigma des Spectres
     122    TVector<r_4> sigspecV2(cfour1.Size());
    118123    TVector< complex<r_4> > visiV12( cfour1.Size() );
    119124
     
    130135
    131136    uint_4 ifile = 0;                           
    132     uint_4 nzm = 0; 
     137    uint_4 nzm = 0;  // Nb de paquets moyennes pour le calcul de chaque spectre
     138    uint_4 nmoyspec = 0;  // Nb de spectres moyennes
    133139
    134140    uint_4 curfc=0;
     
    236242        spectreV2 /= (r_4)(nzm);
    237243
     244        // pour le calcul des moyennes et sigmas de ces spectres
     245        moyspecV1 += spectreV1;
     246        moyspecV2 += spectreV2;
     247        sigspecV1 += (spectreV1 && spectreV1);
     248        sigspecV2 += (spectreV2 && spectreV2);
     249        nmoyspec++;
     250
    238251        visiV12 /= complex<r_4>((r_4)nzm, 0.);
    239252
     
    297310  }
    298311---- */
     312  if (nmoyspec>0) {  // Calcul des moyennes et sigmas des spectres
     313    r_4 fnms = nmoyspec;
     314    moyspecV1 /= fnms;
     315    moyspecV2 /= fnms;
     316    sigspecV1 /= fnms;
     317    sigspecV2 /= fnms;
     318    sigspecV1 -= (moyspecV1 && moyspecV1);
     319    sigspecV2 -= (moyspecV2 && moyspecV2);
     320    sigspecV1 = Sqrt(sigspecV1);
     321    sigspecV2 = Sqrt(sigspecV2);
     322    TVector<r_4> rsbV1, rsbV2;   // Rapport signal/bruit
     323    moyspecV1.DivElt(sigspecV1, rsbV1, false, true);
     324    moyspecV2.DivElt(sigspecV2, rsbV2, false, true);
     325    sprintf(fname,"%s_ms.ppf",path_.c_str());
     326    POutPersist po(fname);
     327    po << PPFNameTag("moyspecV1") << moyspecV1;
     328    po << PPFNameTag("moyspecV2") << moyspecV2;
     329    po << PPFNameTag("sigspecV1") << sigspecV1;
     330    po << PPFNameTag("sigspecV2") << sigspecV2;
     331    po << PPFNameTag("rsbV1") << rsbV1;
     332    po << PPFNameTag("rsbV2") << rsbV2;
     333    cout << " BRProcARaw2C::run() created moysigspec file " << fname << card2name_(card_) << endl;
     334  }
     335
    299336  ts.SetNow();
    300337  tm.SplitQ();
Note: See TracChangeset for help on using the changeset viewer.