Process phantom

How to process phantom data

Make dir list:

ls -d /data0/studen/data/Gate/umSetup/umSetup2_rod*_1 | 
> /data0/studen/data/Gate/umSetup/umSetup2_1_phantom.dirlist

Apply gate2um:

cd ~/software/build/gate_tools/
./scripts/processList.sh /data0/studen/data/Gate/umSetup/umSetup2_1_phantom.dirlist |
/data0/studen/data/imageRec/layout/setup0/gateSetup.in

The last argument defaults to setup0/gateSetup.in, so it can be omitted if appropriate. processList.sh should create umSetup2_1_phantom.filelist. Go to root:

cd ~/software/build/observer_tools/root_scripts
root
root[0] while (gROOT->FindObject("data")) gROOT->FindObject("data")->Delete();
root[1] TTree *t1=makeTreeParsed_filelist("/data0/studen/data/Gate/umSetup/umSetup2_1_phantom.filelist",2);

If data is from setup0, change last value to 0. I often check how many events were collected:

root[2] t1->GetEntries()
(Long64_t) 325570

Now start the processing software:

root[3] DataParser p
root[4] p.ImportSetup("/data0/studen/data/imageRec/layout/setup2/setup2.in");
root[5] sinogramData s;
root[6] p.makeSinogram(&s,0x100);

The BGO-BGO data (0x100) seems like a good place to start because of the large statistics. Loading sensitivity works better from a plain dataManager:

root[7] DataManager m;
root[8] m.ImportSetup("/data0/studen/data/imageRec/layout/setup2/setup2.in");
root[9] m.LoadSensitivity(&s, 0x100);

Now we can attempt reconstruction. Some preparatory steps:

root[10] p.SetSensMatrix(&s);
root[11] p.SetPSF(&s,0x100);
root[12] s.Vectorize();

Start a reconstructor:

root[13] Reconstructor rec;
root[14] rec.addSinogram(&s);

A fast filter back-projection for overview:

root[15] rec.FBP();
root[16] rec.getSData()->getImage()->Draw("COL");

If things look sensible on the FBP, you can also look for MLEM reconstruction:

root [17] rec.ResetIter()
root [18] rec.ResetImage()
root [19] rec.SetNiter(10)
root [20] rec.run()=1
root [21] rec.iterate();

links

social