quality of hits

New calculation of quality of hits

presentation at the S&C meeting (10/08) summarizing the new formula : here

  • StSsdUtil/StSsdBarrel.cc : add 3 methods for the calculation of the quality

 

  • StSsdUtil/StSsdStrip.cc : propagate idTruth to spa_strip ; it was only written in sls_strip
  • StSsdUtil/StSsdListStrip.cc : write only one idTruth for each strip (the one given the biggest signal contribution), the same for idHit and idMcHit(previously we allow to write up to 5 idTruth)
  • StSsdPointMaker/StSsdPointMaker : change to use the new writePointToContainer() method where the quality is calculated

 

 

In this part of the code, we don't fill anymore 5 possibles IdMcHit,IdHit and IdMcTrack.

During the hit GEANT to adc strip conversion, if 2 or more GEANT hit fired the same strip :

  1. the adc of the strip is still the sum of the different contributions from the hits
  2. We keep only the idMcHit,IdHit and IdMcTrack from the biggest contribution : ie, we compare for each GEANT hit that fired this strip the resulting adc it produces and keep the IdMcHit,IdMcTrack and IdHit from this GEANT hit 

 

before change :

for wafer 8215, we have 3 GEANT hits :

 

ladder=14 wafer=11 charge=0.000175 id = 150 volume id =8215 parentTrack=427

 xl =-1.9065 yl =-1.0925 zl =0.00049252

 

ladder=14 wafer=11 charge=0.000121 id = 151 volume id =8215 parentTrack=1385

 xl =-1.9235 yl =-0.8555 zl =-0.0015069

 

ladder=14 wafer=11 charge=0.001000 id = 152 volume id =8215 parentTrack=1385

 xl =0.029499 yl =-0.2715 zl =0.00049263

 

StSsdPointMaker:DEBUG - PrintStripDetails() - Wafer 8215

StSsdPointMaker:DEBUG - PrintStripDetails() - 6 strip(s) on the P-side of this wafer 

StSsdPointMaker:DEBUG - PrintStripDetails() - Strip/Adc/Ped/Noise/Analog

StSsdPointMaker:DEBUG - PrintStripDetails() - 317 447 116 5.5625 0 

e=0 idMcHit=153 idMcTrack=1975

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 318 20 111 5.6875 0 

e=0 idMcHit=153 idMcTrack=1975

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 379 614 119 5.8125 0 

e=0 idMcHit=152 idMcTrack=1385

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 584 98 116 6 0 

e=0 idMcHit=150 idMcTrack=427

e=1 idMcHit=151 idMcTrack=1385

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 585 21 121 6 0 

e=0 idMcHit=150 idMcTrack=427

e=1 idMcHit=151 idMcTrack=1385

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 586 70 116 6 0 

e=0 idMcHit=150 idMcTrack=427

e=1 idMcHit=151 idMcTrack=1385

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

 

After the change :

 

StSsdPointMaker:DEBUG - PrintStripDetails() - Wafer 8215

StSsdPointMaker:DEBUG - PrintStripDetails() - 6 strip(s) on the P-side of this wafer 

StSsdPointMaker:DEBUG - PrintStripDetails() - Strip/Adc/Ped/Noise/Analog

StSsdPointMaker:DEBUG - PrintStripDetails() - 317 447 116 5.5625 0 

e=0 idMcHit=153 idMcTrack=1975

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 318 20 111 5.6875 0 

e=0 idMcHit=153 idMcTrack=1975

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 379 614 119 5.8125 0 

e=0 idMcHit=152 idMcTrack=1385

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 584 98 116 6 0 

e=0 idMcHit=150 idMcTrack=427

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 585 21 121 6 0 

e=0 idMcHit=150 idMcTrack=427

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

StSsdPointMaker:DEBUG - PrintStripDetails() - 586 70 116 6 0 

e=0 idMcHit=151 idMcTrack=1385

e=1 idMcHit=0 idMcTrack=0

e=2 idMcHit=0 idMcTrack=0

e=3 idMcHit=0 idMcTrack=0

e=4 idMcHit=0 idMcTrack=0

 

Following are the details of the charge sharing over these strips (p-side)

ladder = 14  wafer = 11

side = 0 st =0 id =584 tabDe(0)=0.000155 charge=0.000175 NId=150 McHit=150 MvTrack=427

side = 0 st =1 id =585 tabDe(1)=0.000023 charge=0.000175 NId=150 McHit=150 MvTrack=427

side = 0 st =2 id =583 tabDe(2)=0.000002 charge=0.000175 NId=150 McHit=150 MvTrack=427

side = 0 st =3 id =586 tabDe(3)=0.000000 charge=0.000175 NId=150 McHit=150 MvTrack=427

 

side = 0 st =0 id =585 tabDe(0)=0.000011 charge=0.000121 NId=151 McHit=151 MvTrack=1385

side = 0 st =1 id =586 tabDe(1)=0.000111 charge=0.000121 NId=151 McHit=151 MvTrack=1385

side = 0 st =2 id =584 tabDe(2)=0.000000 charge=0.000121 NId=151 McHit=151 MvTrack=1385

side = 0 st =3 id =587 tabDe(3)=0.000002 charge=0.000121 NId=151 McHit=151 MvTrack=1385

 

side = 0 st =0 id =379 tabDe(0)=0.001000 charge=0.001000 NId=152 McHit=152 MvTrack=1385

side = 0 st =1 id =380 tabDe(1)=0.000021 charge=0.001000 NId=152 McHit=152 MvTrack=1385

side = 0 st =2 id =378 tabDe(2)=0.000013 charge=0.001000 NId=152 McHit=152 MvTrack=1385

side = 0 st =3 id =381 tabDe(3)=0.000000 charge=0.001000 NId=152 McHit=152 MvTrack=1385

 

---> For example, strip 585 which had 2 contributions from hit 150 and 151, we see that :

    1) contribution from hit 150 : 0.000023 MeV

            2) contribution from hit 151 : 0.000011 MeV

Then it is the IdMctrack from hit 150 (ie 427) that is kept.

 

  • Code that have to be changed : StSsdUtil/StSsdStripList.cc

Case of splitted clusters:

 

Result of Valgrind : 

the test I did with the embedding chain failed.

But it works whenever I remove Ssd or svt from the embedding chain, or if I decreased the multiplicity.

I used Valgrind with the following chain :

 

void bfcMixer_TpcSvtSsd(const Int_t Nevents=1,Int_t isSvtIn=1, Int_t isSsdIn=1,

                    const Char_t *daqfile="/star/rcf/test/daq/2005/051/st_physics_adc_6051006_raw_1050001.daq",

                    const Char_t *tagfile="/star/rcf/test/embedding/cuProductionMinBias/FullField/P07ic/2005/051/st_physics_adc_6051006_raw_1050001.tags.root",

                    const Double_t pt_low=0.1,

                    const Double_t pt_high=5.0,

                    const Double_t eta_low=-1.0,

                    const Double_t eta_high=1.0,

                    const Int_t pid=9,

                    const Double_t mult = 0.1) {

 

The output of valgrind is here.
 
  • Another test :
I ran the embedding chain for 2 configurations :
  1. ssd alone, by putting isSvtIn==0 in the bfcMixer macro (and also options -srs and -SvtIn)
  2. svt alone, by putting isSsdIn==0 in the bfcMixer macro (and also options -srs and -SvtIn)

Results :

for ssd alone : 

Fig 1 : hit quality vs energy

Fig 2 : track quality for 

h1 : no ssd hit requirement (black)

h11 : mFitSsd ==0 in mMatchedpairs tree (red)

h111 : mFitSsd ==1 in mMatchedpairs tree (green)

for all histograms :  mMatchedPairs.mFitPts>15 && mMatchedPairs.mPtPr>0.1 && TMath::Abs(mMatchedPairs.mEtaPr)<1

 

 for svt alone :

the chain breaks at event 96 :

 

St_trg_Maker:: Daq2003 : Event has been accepted

StMaker:INFO  - *** StMaker::Make() == StOK(0) ***

St_tpcdaq_Maker::Make() method called in Mode=1 DAQ=1

Pixel count = 1650297

Got through St_tpcdaq_Maker OK.

QA :INFO  - QAInfo:StRTSClientFCFMaker  built Sep 10 2008 23:18:43 from Tag $Name:  $Id: 

StRTSClientFCFMaker:INFO  - <FCFMaker::Make> Making event 96, annotation 0...

StRTSClientFCFMaker:INFO  - <FCFMaker::Make> StEvent exists.  Not filling tphit table

StRTSClientFCFMaker:INFO  - <FCFMaker::Make> Merged 2300 of 39796 calculated clusters

StRTSClientFCFMaker:INFO  - <FCFMaker::Make> Only raw data available.  No daq file clusters

StTpcHitMover:INFO  - StTpcHitMover::Make use StEvent 

StMaker:INFO  - *** StMaker::Make() == StOK(0) ***

StSvtDaqMaker:INFO  - *** StSvtDaqMaker::Make() == StOK(0) ***

mNumOfGeantHits = 125

 *** Break *** Segmentation violation

 Traceq lun = 0, level = 99 

 TRACEQ.  In-line trace-back still not available.

Signal 11 caught without longjmp target

 

The valgrind report after commit (10/21) for the SSD and SVT is here