Re: [Tirius-users] New user of Tirius
Status: Alpha
Brought to you by:
jdleroux
From: Liliana C. <llc...@gm...> - 2009-06-28 21:09:51
|
Hello. Thank you so much for you help. It was really helpful. I am sorry that I used your personal email, but I was getting somehow desperate. From now on, I will only use tirius-users. This week I will try to get on with changing your code, now with better insight. I will keep you updated on my evolution and my problems. Once again, just keep the goodwork. Thank you again, Liliana On Sun, Jun 28, 2009 at 7:49 PM, Jean-Daniel Leroux<le...@ho...> wrote: > > Hi Liliana, > > Sorry for the long delay... I just realized that messages sent with the > tirius-users mailing list address were going directly to my junk mail > folder... not a good thing when you are the administrator! Now it is fixed. > > First, thanks for reporting the bugs about the loading of the sinogram and > for the Gate single data... I will try to fix them for the next release of > Tirius that maybe could be in octobre or novembre. > > About the SetCameraDefaultParams() function, the ring diameter is computed > from the front face of the crystals. In fact, the 150 cm you not about the > Sherbrooke scanner is probably measured from the front face of the detector > casing and not from the front face of the crystal within the casing which is > the reference I use. About the number of ring you should use the total > number of ring which is in your case 13*4=52 for your scanner. > > For the FindCoincDetectorAdd and FindSingleDetectorAdd function, it could > be a little bit tricky depending on how you defined your scanner in your > .mac file for GATE. The key is to follow in which order you use your > repeater for repeating the crystals to build your scanner geometry. > > Lets have an example by assuming that you defined your block of crystals > first. Then you repeat it around the ring lets say 8 times. And finally you > repeat the 4 block axially. Then, > > volumeID5 could go from 0 to 168 (position in block 13x13) > volumeID4 could go from 0 to 7 (position in the ring) > volumeID3 could go from 0 to 3 (axial position of the block) > > Then, you should choose a given convention for ordering your crystal in the > scanner. I suggest you to order them counter-clockwise from the bottom ring > to the top ring. Your detector address could then be found using: > > axialRingPos = volumeID3 * 13 + (volumeID5 / 13); > crystalPos = volumeID4 * 13 + (volumeID5 % 13); > detectorAddress = axialRingPos * numberCrystalInRing + crystalPos; > > This is an example only so do not cut and paste it directly in your own > code. You will have to check if the detector address correspond well to what > you expect looking at the (x,y,z) position of the hit in the GATE list mode > file. > > Good luck, > > Jean-Daniel > > > > > > > ---------- Forwarded message ---------- > From: Liliana Caldeira <llc...@gm...> > Date: Thu, Jun 18, 2009 at 10:40 PM > Subject: New user of Tirius > To: tir...@li... > > > Hello everyone. > > I'm a new user of Tirius. Just start last week. I have used STIR and > Qt before, so the installation went fine and the basic user interface > was also good. First, let me congratulate you in the great work. > > I have noticed one bug that you might want to take a look. When I am > trying to convert GATE data if you do it two times in a row, it gives > you a Segmentation Fault in the second one. I try to understand where > the problem is and aparently it is in Sinogram.cpp in member function > CreateSinogram. In the second if, the option else when trying to > delete mSinogram-.>noCrystal1. I don't know if I'm doing something > wrong or it is really a bug. Anyway, what i do for now is just start > tirius over again, because I don't know how to fix it. > > else // Then we only recompute the sinogram address > { > if (mSinogram->noCrystal1 != NULL) delete [] > mSinogram->noCrystal1; > mSinogram->noCrystal1 = new IFormat [mNbTORinScanner]; > if (mSinogram->noCrystal1 == NULL) { > ShowError("CreateSinogram: > Unable to allocate memory for sinogram"); return ERROR; } > > if (mSinogram->noCrystal2 != NULL) delete [] > mSinogram->noCrystal2; > mSinogram->noCrystal2 = new IFormat [mNbTORinScanner]; > if (mSinogram->noCrystal2 == NULL) { > ShowError("CreateSinogram: > Unable to allocate memory for sinogram"); return ERROR; } > } > > > > I also had to change some line in GateSingleData.cpp because when > there is less than two run in the gate simulation (I have one), the > mAcqTimeSlice is zero and it gets into a endless loop. I can send you > a example file if you would like. As far as I can see, I have 3 > options and I would like you to tell me which is the most correct one: > 1- Initialize mAcqTimeSlice with value of 0.01 > 2- Change the if clause in cGateSingleData::ReadCoincInfo(char > *FileName), we have: > if (bTimeSliceFound == false && D1[i].runID == 1) { > ... > } > > and change to if (bTimeSliceFound == false && D1[i].runID == 0) { > ... > } > and put a if inside if (mAcqTimeSlice <0.01) mAcqTimeSlice=0.01 > > 3- Just put another if before this one > if (bTimeSliceFound == false && D1[i].runID == 0) { > ... > } > > I think the first one is the most elegant, but I'm afraid it will > affect other things. Can you tell me your opinion? > > Now, I'm working on adding my GATE scanner to the converter. I add all > the files necessary and I already see my scanner in the options. The > only thing i need to do now is change the parameters in > SetCameraDefaultParams(). But I'm not sure how you calculated the > RingDiameter, because instead of 150 * 2 you used 157*2. Should I had > some extra mm to my RingDiameter too? As my Gate Scanner is different > from SherPET, I'm also not sure which number of ring i should put, > because i have 4 rings, but each ring has a block of 13*13 repeated > around the ring. Should I put 4, or should I put 13*4=52? > In the functions, FindCoincDetectorAdd and FindSingleDetectorAdd, if > it is a cylindrical PET (6 columns for volumes) i leave it like that, > but if it is a ECAT , i should change the number 6 to the number of > columns of the volumes. Do you think i need to change something else? > > I also want to say that I can help in testing for some other data that > I have acess, such as Siemens scanners or GATE simulations. I'm more > than glad to help. > > Thank you so much for any help that you can give me. > > Best Regards, > Liliana Caldeira > PhD student > University of Lisbon > Institute of Biophysics and Biomedical Engineering > > > ________________________________ > Internet Explorer 8 makes surfing easier. Get it now! |