Current Status

RHEL4 SCons versus CMT redhat4 builds are validated.

RHEL5 SCons builds versus RHEL4 SCons validation is well underway.

Introduction

GlastRelease moved to Gaudi v21r7-gl1 allowing for RHEL5 builds starting with tag GlastRelease 20-00-00.  Validation started with tag 20-03-04, where first the CMT rhel4_gcc34opt build was used as the baseline for the SCons redhat4-i686-32bit-gcc34 Optimized build system tests, where event based random number seeding was used.

RHEL4 CMT versus RHEL4 SCons builds of GlastRelease-20-03-04

 http://glast-ground.slac.stanford.edu/SystemTests/?releaseVersionId=13441

Looking at the plots, the main thing I noticed is that the quantity CALRMSTRANS seems to be different in most tests, AG, Muons, Bkg.
I dowloaded the merit files for the allGamma, and compared the merit variable called Cal1TransRms... and they are identical, see plot attached.
I am a bit curious, where does the CALRMSTRANS variable of the systests come from ?
Is that the trans rms of each cluster (not just the first one) before
normalization by the energy, as the units suggests ?
...and why would it be different ?

For other variables in the BackGndMixDC2, the differences seem really small to me, small enough to be ignored... unless someone is willing to dig into the code obviously.

Cheers,
Johan

the CALRMSTRANS variable in the systests comes from the recon ROOT files, it is contains the value of getRmsTrans() for every CalCluster, see line 82 in CalCluster.h: http://www-glast.stanford.edu/cgi-bin/viewcvs/reconRootData/reconRootData/CalCluster.h?annotate=1.32
and this snippet from ReconCalFragment.cxx, one of the systest ROOT macros:

TObjArray clusterCol = cRH->getCalClusterCol();
int nCalClus = clusterCol->GetEntries();
((TH1F*)GetObjectPtr("CALCLUSCOUNT"))->Fill((Float_t)nCalClus);
for (int rc=0; rc < nCalClus; rc++) {       CalCluster* c=(CalCluster*)clusterCol->At(rc);
 ((TH1F*)GetObjectPtr("CALRECESUM"))->Fill(c->getEnergySum());
 ((TH1F*)GetObjectPtr("CALRECELEAK"))->Fill(c->getEnergyLeak());
 ((TH1F*)GetObjectPtr("CALRECECORR"))->Fill(c->getEnergyCorrected());
 ((TH1F*)GetObjectPtr("CALRECEFIT"))->Fill(c->getFitEnergy());
 ((TH1F*)GetObjectPtr("CALRMSTRANS"))->Fill(c->getRmsTrans());
 blah blah     }

Where if I'm reading the code correctly, getRmsTrans is associated with an old pre-P8 variable that is left in to allow reading of older ROOT files. But in today's world - that variable isn't initialized ... not even to zero..and appears to be completely unused. One might modify the code to at least init those old variables to zero to avoid future confusion and this particular plot could be eliminated and replaced in the system tests..with something else such as the CalMomParams values - see next paragraph.

Meanwhile the merit variable Cal1TransRms is filled in AnaTup via:
CAL_Clu1_MomTransRms = calCluster->getMomParams().getTransRms(); which is going to be calculated in the CalRecon CalMomentsAnalysis code...the newer P8 stuff...and I'm happy to hear you see that the values are identical in the two runs.

Heather

A Final Word from Johan

I had a look at the plots again, and another couple of variables,
and I confirm that the v20r3p4-sconsEvSeed – v20r3p4-evSeed comparison looks really good.
The few remaining differences are sub-percent level and for really just a couple of quantities.

As far as I am concerned, that validates the scons release.

I'll now start to look at the RHEL4/RHEL5 comparisons.

Cheers,
Johan

RHEL5 SCons versus RHEL4 SCons builds of GlastRelease-20-03-04 

Next the redhat5-i686-32bit-gcc41 Optimized build was run against the redhat4-i686-32bit-gcc34 Optimized build of GlastRelease-20-03-04:

http://glast-ground.slac.stanford.edu/SystemTests/?releaseVersionId=13461

some information about the RHEL5 vs RHEL4 system test: http://glast-ground.slac.stanford.edu/SystemTests/plots.jsp?releaseVersionId=13461&selectedReferenceReleaseVersionId=13441&testName=BackGndMixDC2

+ allGamma:
the biggest (but still small) differences are for the ACDPOCAREF_X and ACDPOCAREF_Y quantities. I can imagine that this kind of quantities use advance math functions that are then optimized or compiled in slightly different ways for gcc34 and gcc41.
May be Eric remembers what's behind this ?
'''
AcdTkrHitPoca* aTkrHitPoca = acd->getAcdTkrHitPoca(iTkrHitPoca);
TVector3 pocaRef = aTkrHitPoca->getPoca() - aTkrHitPoca->getPocaVector();
((TH1F*)GetObjectPtr("ACDPOCAREF_X"))->Fill((Float_t) pocaRef.X() );
'''

+ VerticalProton1GeV
most striking feature is that the FilterEnergyDiff is clearly shifted by 1 MeV !? RHEL5 filter energy is RHEL4 filter energy + 1 MeV
other quantities are fine.

+ VerticalGamma100MeV has a number of interesting features
INTMOMPOS: Mc int. hits from moments
INTSEGMENT: Mc int Xtal segment numbers
TKRHITPLANEZ: Track plane Z
have all normalization issues: RHEl5 is ~3% lower than RHEL4 in the number of entries, but the mean and rms of the distributions match perfectly. I don't really understand this one.

+ BackGndMixDC2
POSMCTKRTRAY(Mc Pos. Hit Tkr tray number): RHEL5 higher by some 20% for small try numbers
similar effects (but smaller) for TKRLAYER and TKRHITPLANEZ

So, overall, to my eyes, there is nothing really wrong:
just a couple of small features, on particular low level quantities.

However, I don't have much experience in looking at these system tests, and in understanding how to deal with small differences, so I'll let other more expert than I am chime in !

Cheers,
Johan

  • No labels