FAQs to MPA-3 Performance


 Q: About the 4K and 16K FIFO: Can you give me some firm ideas on how to recommend to customers which they need? Is it based on a count rate issue; i.e. up to some count rate the basic 4K FIFO is ok, then above that the customer should order the 16K. I need to offer some logical explanation on how to select these options.

A: Please look in our web-page what we have about the MPA-3 system. Under "Performance" a pdf file can be downloaded describing the throughput that can be achieved using a single- and dualprocessor system with the three possible FIFO sizes. The essential numbers are contained in the following table: ADC Conversions/sec without loss of data


single Pentium II 350 MHz

Dual Processor 

4k FIFO (standard)  
with display  
w/o display



16k FIFO (option)  
with display  
w/o display



List data to SCSI



List data to IDE (DMA mode enabled in registry)




Q: How can the DMA mode for my IDE harddisk be enabled in the registry?

A: Windows 98 and 2000 should DMA mode enable automatically. But under Windows NT it is necessary to have at least Service Pack 4 and to change some registry entries. Check the registry by running regedit and look under HKEY_LOCAL_MACHINE...HARDWARE...DEVICEMAP...Scsi...Scsi Port 0. If you see for the DWORD value DMAEnabled the value 0x0, DMA is not enabled. If you see a value 0x1, it is already enabled. To enable it, look under HKEY_LOCAL_MACHINE...SYSTEM...CurrentControlSet...Services...atapi and add here a key named ;Parameters and under Parameters a key named Device0. Then add here a new String Value named DriverParameter and set its value to "DMADetectionLevel=0x1". Then reboot the system and look whether DMAEnabled is now 0x1. If it is still zero, you have probably an old BIOS, motherboard, or harddisk. Without DMA mode enabled, the typical maximum value for ADC conversions per sec and writng a listfile to IDE harddisk is only 120.000 instead of 800.000.


Q: MPA-3 Performance Chart: When I look at the performance chart in careful detail, I have several questions:

A. Exactly how much is the throughput affected by fewer parameters. For example, most of our applications involve 2, 3, or 4 parameters only. A: If you have 4 ADCs instead of 16, you can in principle use a throughput per ADC by a factor of 4 higher before you see a count rate limit.


Q: B. Exactly what does he mean by "ADC Conversions/sec without loss of data"?

A: At this measurement we observed the FIFO full flag with a scope at the PCI board to explore the limit of the throughput without loss. Above this limit still even more data per time are taken, but with some loss.


Q: Clearly, the ADC's are NOT included in this measurement, right? So what is ADC "conversions"? I thought it simply means the number of digital data words that the MPA-3 could accept per second (whether from an ADC or any other front end device that produces digital data), both with and without the PC graphic real-time display turned on (i.e. writing data only to hard disk, and writing to hard disk plus histogramming in RAM for a real time display)

A: no data were written to hard disk, only transfered into the PC RAM.. Histogramming and writing to hard disk depends on the performance capabilities of the PC used.


Q: But now I am wondering if my understanding is correct, since at the bottom of the chart states "List Data to SCSI (hard disk I assume)" and "List data to IDE". What is the difference? These numbers are MUCH lower 1600K and 120K?

A: Yes this was the observed throughput limit when writing a listfile to a standard harddisk with IDE or SCSI interface. Of course these numbers can be improved better by using a faster (and naturally more expensive) hard disk.


Q: Isn't the other data (for IK, 4K, 16K FIFO's etc) for writing to a hard disk? (of some type). Nothing really says. If not, then what is it for?

A: No, it is for histogramming spectra in the PC RAM.


Q: I hope this main data is not only for using a RAID disk or something exotic like that.

A: We had no RAID system, but if you want to transfer data to disk with the speed that is in principle possible, you need a RAID system or anything else that can accept such a data rate..


Q: C. Why does the dual processor PC make such a difference? I would think the PCI board would be the limitation. Pls explain.

A: The evaluation of the data for histogramming needs some processor time and therefore it helps very much to have a dual processor system, as one processor in principle can handle the transport of the input data and the other evaluate the data.


Q: D. Do the new "100 MHz bus" PC's make any difference in the throughput? Are they an advantage? How?

A: Yes. But we used a 100 MHz bus PC for this measurement.


Q: E. Is this only for periodic-arrival statistics data? versus random arrival?

A: This was for periodic data, as no random data was available - but since we buffer the data there should be no difference.


Q: 1. Thank you for the clarification on the performance chart. That was not at all clear. I think the chart also needs to say that this is RAM histogram data explicitly and identify the type of PC used (speed, etc).

A: 1) the performance chart is actually quite accurate. If RAM histogramming, a RAID system or any other storage device used that is fast enough to accept this data is immaterial. Every few months there are new, faster storage devices being introduced which is why we do not intend to make statements that puts qualifications on our performance that will be outdated a few weeks later. It is just a question of what the customer will spend for his storage device that determines the sustainable data storage rate, that his system has. In essence it is not the MPA-3 system that limits the data transfer rate but the storage device the customer is willing to buy.


Q: 2. I need to know if the "List Data to..." performance numbers at the bottom of this chart also improve by a 4X if only 4 parameters are used??.

A: 2) The transfer rate we listed is the maximum rate that is possible without loosing data. The transfer is not influenced by the number of ADCs connected. It can be one or 16 or anything inbetween. If you have just one ADC and the max. transfer rate to your storage device is for example 400,000/s it is quite clear. If you have two ADCs then the total conversions from both ADCs can not exceed 400,000/s - don't think of any restrictions like 200,000/s per ADC - it does absolutely not matter what the actual counting rate of each ADC is as long as the sum does not exceed 400,000/s. In coincidence operation the conversions that meet the coincidence conditions can not exceed 400,000/s even if the input rate to the ADCs is perhaps much higher. As you know normally not all input events produce a coincidence!!


Q: 3. It is not clear to me why the system performance improves so much, with periodic data, as the FIFO size increases. For burst data, I could understand that, but for periodic data, I do not understand. It must have something to do with the latency in the block transfers through the PCI bus. Is this correct? Can you explain this more for me? What are the limiting factors? This is important because all of our applications involve random (Poisson) arrival statistics for data. I am trying to "de-rate" the various performance numbers to predict what will happen for random arrival data, and this is not straightforward given the numbers shown. Usually the difference is at least a 3X reduction for a reasonable dead time loss, but it isn't clear what to do in this case.

A: 3) We are actually looking at the data storage rate which is from the FIFO via the PCI bus to RAM (in this case because we do not have a RAID which might be even faster). At this point the data is transferred in block form. Your point would be quite valid if the input of the MPA-3 would be the restriction - however the input of the MPA-3 is much faster in accepting data than can actually be transferred. If the ADCs used are fast enough for the data acceptance capability of the MPA-3 any random data arriving will be derandomized in the FIFO. Any dead time is therefore negligible because the average will be the same as for periodic input signals. I hope you can see that the data transfer performance of the MPA-3 does not depend on periodic or randomly arriving events on the input side but on the capability of the PCI-bus and the selected storage device. Rather than "de-rating" the MPA-3 performance attention should be given to selecting the right frontend- and storage devices to match the requirements of the application.

3) Here I would like to give you some more detailed technical information: The data transfer works the following way:

During an acquisition two seperated threads are running initiated by the MPA3 server program: the DMA handling thread and the evaluation thread. The DMA handling thread always calls the driver by providing a RAM buffer of specified size (the buffer size can be specified in the mpa3.ini file by a line blocksize=... and can be rather large). The PCI board transferes any data coming in directly with DMA into the PC RAM using an interrupt. When the driver call returns, the DMA handling thread in the software signals the evaluation thread that there is a new buffer available and starts a new driver call specifying another buffer (always two buffers are used alternatively).

The evaluation thread optionally dumps the data to disk (the speed is dependent on the harddisk used) and evaluates it for histogramming. It must be ready with the evaluation of the last buffer before he can start evaluating a new buffer. So you see the way how the FIFO size is involved and how a dual processor system can help. Most of the time the data is transfered via DMA directly into the PC RAM. But when the driver call returns, we are a short time in USER mode before a new driver call is initiated. During this time the FIFO is filled with data and with the standard FIFO size of 1 k (actually only 512 double words are usable) it can then happen that the FIFO is full and the data stream stops for a short time. In a dual processor system the second processor can work on evaluating the data and painting the histogrammed spectra without perturbing the data flow and so reduces the probability of a full FIFO during two DMA transfers.

The throughput rate numbers were taken by observing the FIFO full flag and are limits of a "throughput without loss". For statistical data a rare loss of data normally can be accepted without problem; it just increases a little bit the dead time of the system that you have any way in the ADC's but does not influence the quality of the data. But for some experiments no dead time at all is acceptable and data are coming with a continuous high rate. If the data come in small bursts, this is no problem because this can be handled by a large DMA buffer size and, eventually, FIFO size. So the peak rate in a random flow can be even much higher than the rates in our list without causing much problems.


Coincidence Definition Window

Q: We do not understand for what "move" button (move ADC registered in Coinc. with any) to Dependent coinc. groups) is. Is there no problem even if an ADC is not registered in Coinc. with any? We understand what "copy" button is for. However, we do not know how we should use "move" button. Please advise.

A: If an ADC is in the 'Coincidence with any' group, it means that an event is registered when this ADC has a valid conversion. If an ADC is in any 'Dependent coinc. group' it means that an event is registered when  all ADC's in this group have valid conversions. The 'Move' button moves the ADC from the 'Coincident with any' group into the dependent group, it is removed from the 'Coincident with any' group, whereas the 'Copy' copies it into the dependent group and lets it in the 'Coincident with any' group. Using 'Copy' and 'Move' it is possible to have an ADC in several dependent groups and remove it from the 'coincident with any' group. It makes no sense to have any ADC as well in the 'coinc. with any' as in a dependent group, because any event is registered already if this ADC has a valid conversion because it is in the 'coinc. with any' group, no matter whether it is in a dependent group or not.


Q: Please let us know what we should do to carry out anti-coincidence measurement by using MPA-3.

A: An event can be rejected with a TTL signal. It makes no sense to reject by a converted ADC signal because one should not measure the amplitude of a signal and then reject this information because it causes dead time. You can either use the gate input of the ADC's or you could use the reject input, the 3rd auxiliary connector at the MPA-3 base module: Press in the Coincidence definition dialog the button "Aux conn..". The Auxiliary connectors dialog is opened. For the REJECT input enable the checkbox "Coincidence Mode", define the input signal polarity and use "Instantly" reject (or reject "at end of coincdence" window). Close the Auxiliary connectors dialog and you have now /REJ in the "Coinc. with any" list. You can use it for the coincidence groups like an ADC, for example move it into a dependent group. Note that for positive polarity the signal at the REJ input must have a rising edge within the coincidence time window or for negative polarity a falling edge. To make an anticoincidence, you can also define spectra with a condition set on a ROI. Define a ROI containing a complete ADC spectra, define a condition for events NOT inside that ROI, and set this condition on any other spectra you want to gate with this anticoincidence.


Q: I know in the MPA2 system if the DEAD signals do not arrive within the coincidence window then a zero is returned. Is this also the case with the MPA3 system?

A: No. In the MPA-3 the zero is returned when a Dead time signal was present but no Data Ready did come within the data-ready-timeout. It means that either this timeout was too short or the pulse was below the threshold. In the MPA/PC-II a zero was returned in "coincidence mode" also when no signal at all was present. In the MPA-3 only data from ADC's are stored that had a Dead time signal (for singles only the Data Ready is observed). For each event an information word informs which ADC's had fired. Q: A related question for another customer: On the MPA-3, this customer proposes to capture 16 parameters, consisting of 8 pairs (X-Y). He wants to know if coincidences can be set up for these 8 groups of 2 parameters each. In looking at the software, it seems there is a maximum of 4 groups that can be defined (set up)? Is it possible to specify 8 groups, each consisting of 2 parameters? A: It is in principle no problem to expand the software up to 8 dependent coincidence groups. If necessary, we can make this software expansion without any additional cost. Of course the customer could also use all ADCs in the 'Coincidence with any' list and is then free to see any coincidences. The data flow is not higher when there are always events in pairs of two ADC's, because for any coincidence event always an informational word is transfered saying which ADCs had data and then only the data words of ADCs are transfered that performed a valid conversion (this is very different from the data flow in the old MPA/PC-II system).


Q: I need some more explanation about setting the coincidences. If an ADC1A (with S) is entered into the "Coincidence with any" column of the dialog box, is this equivalent to: (for example)??? "Accept an event as valid if it occurs on ADC1A and any other ADC that is shown as active within the coincidence window time setting? ie. ADC1A and (ADC1B OR ACD1C OR......) ??? It is intended as just a short format to state this same logic? What would occur if the START box was not checked, so there is no "S" after the ADC1A? The discussion of this in the MPA-3 manual is very brief.

A: The Start enable means that this ADC is allowed to start a coincidence window. If it is not checked, it cannot initiate storing an event and it is stored only if its Dead time signal is within the coincidence window started by any other ADC with the Start enable attribute. If ADC1A with S is entered in the "Coincidence with any" column, it is equivalent to: "Accept an event as valid if it occurs on ADC1A and start a coincidence window. Store then the converted value of ADC1A and of any other ADCs that had a dead time signal within the coincidence window". It is not possible to decide which of the ADC's started the coincidence window if more than one in an event have the S attribute. If no other ADC had a dead time signal within the coincidence window, this single value is stored alone.


Listfile Format

Q: Could you help a little bit about the format? Here is what I understand : FF FF FF FF is flag for next word to be data FF FF 00 40 is ms or multiple time flag After a FF FF FF FF flag, I find 01 00 00 80 (I deduce ADC 1) and then the value (FF FF 25 00) (generator to channel 25) Is that correct. Should data from ADC 2 coded like this 02 00 00 80 ?

A: Here is the description of the listfile format copied from the README file:

Every millisec there is a timer event. It is a 32 bit word containing 0x4000 as high word and as low word for ADC 1 a 1 in bit 0 if it's "alive" and a 0 if its "dead", the same for ADC2 in bit 1 and so on. Counting the corresponding set bits directly gives the live time in milliseconds for each ADC, counting the timer words gives the realtime of the run in milliseconds. It is possible that the timer is written only every 10, 100 or 1000 milliseconds. This is then indicated by a line "timerreduce=10" (100, 1000, respectively) immediately preceding the [LISTDATA] tag in the header of the listfile.

After a timer event can follow either again a timer event or a synchron mark, i.e. a double word containing 0xFFFFFFFF and then event data.

Event data start always with a event signal double word containing in the high word some flags and a zero in bit 30 (to distinguish it from a timer event), and in the low word for each ADC that has data a 1 in the corresponding bit (bit 0 for ADC1 ...). The ADC data are 16 bit and the data structure is in a 32 bit raster, therefore there must be a 16 bit dummy word inserted for an odd number of ADCs containing data to get an even number of 16 bit data words. If such a dummy was inserted, this is marked in bit 31 of the event signal word. RTC Option: If data of the 48 bit realtime clock (RTC) are in the event, this is marked in bit 28 of the event signal word.

If RTC data are signaled in the event signal double word, the three 16 bit RTC data rtc0, rtc1 and rtc2 follow immediately after the signal word in the next low, high and low words. The rtc value is (rtc2 * 65536 + rtc1) * 65536 + rtc0. It starts from a (preset) value that can be set by software and counts down with 20 MHz (or extern clock). After rtc2 follows in a high word the dummy word if bit 31 in the event signal double word was set, or ADC data.

If RTC data were not signaled, immediately after the signal dword follows in the next low word either a dummy word (if signaled in bit 31) or ADC data (starting from the lowest ADC that has data). From the signal dword it is clear how many ADC data follow and also that it is an even number of 16 bit words, so after this set of data can either again follow a new set starting with a new event signal dword, or a new livetime event.

So far the documentation. Here are some additional comments: In the Intel world all bytes of a word come with the least significant byte at first.

FF FF FF FF is a synchron mark that is always after a timer event and before event data.

00 40 belongs to a double word 0x4000xxxx, i.e. a timer word.

If you find after a FF FF FF FF mark 01 00 00 80, it means an event signal double word 0x80000001. Bit 31 is on, it means a dummy word is inserted in the next low word after the event double word. Bit 0 is on, it means that this event contains only 1 ADC word from the first ADC. Now you see (FF FF 25 00), it means 0x0025FFFF. The low word FFFF is the dummy word, the high word 0x0025 means the ADC value in ADC 1. If you would have data from ADC1 and ADC2 in an event, the event signal word would be 0x00000003, and in the first double word after the event word you would have in the low word ADC1 and in the high word ADC2. If you would have only ADC2 data in the event, the event signal double word would be 0x80000002, and the next double word would contain in the low word a dummy and in the high word the ADC2 data.



Zero Channel Filling
Q: In the 4 parameter coincidence mode it seems to work OK for small pulse heights (up to 5V) but for larger pulses the data gets put into the zero bin on all four ADCs. For a single/independent measurement of just one ADC I can get data to show up properly throughout the full 10V full-scale ADC range. Do you know what can cause this behavior?

A: When you get data into the zero bin for higher pulses, then probably you have to increase the data ready timeout. It is in the ADC Settings dialog (icon showing the tools) just below the Coinc. time. The 7074 ADC has a large conversion time when used with high resolution (160 mikrosec for 16 k as it is a 100 MHz Wilkinson ADC) and the data ready timeout must be large enough.


Q: I already tried to study the influence of this parameter and my channel zero is always filled with a high rate for every DRDY timeout values (50 µs, 200µs or much more !). I made one more test this mornig but doesn't change nothing. I really worry about this. I describe you another test we made : We activated only ADC number 1 in our chain and put it in the "Coinc. with any" configuration in the system configuration dialog box. This way, each time an event occurs, the deadtime signal starts a coincidence window (and only one). On the oscilloscope, we could see that a lot of windows start (aux. output) without no corresponding deadtime signal. In our application, this zero channel filling is a real problem because we are obliged to record very big List files with few relevant events. Here are our questions :

1/ Is that possible (by MPANT software or DLL) to reject the zero channel before the data reach the disk ?

2/ If no, is that possible to consider a dedicated version of theFPGA prom inside the module that would reject the zero channel events due to the DRDY Time-out, instead of sending them to the PC. Dead time correction and time tags accuracy is not so critical for us in comparison with the volume of data.

A: May be you have some noise on the ADC input? this could cause a deadtime signal also without a valid conversion, especially if you use a high discriminator level LLD to discriminate the signal from noise, as the deadtime may be sent also for such signals below the threshold. A lot of counts in channel zero indicate that there are deadtime signals without data ready signals before the data ready timeout. Such events are up to some degree normal. You can use a zoomed view to get rid of these counts for a reasonable scaling of your spectra. In the single mode the deadtime is important only for the livetime correction and such deadtime signals cannot cause zero events. Please check if the number of reasonable counts per sec in your spectra without channel zero is about the same in single and coincidence mode. As this is so important for you I do what I can: We have already in the software a filter for reducing the listfile size by writing only 1/10 (1/100, 1/1000) of the timer data: In the data operations dialog, if you check 'Write Listfile', these options will appear. I introduce here now also an Option 'Drop zero events'. It allows to drop coincidence events with all ADC data being zero. Such events will then also be eliminated before writing it into a listfile. But if any ADC in this event has a non-zero value, the complete event including all zeros is stored. (Version 1.48, Nov-08-2002) I see no chance to achieve this by a hardware change.

(Version 1.52, Oct-07-2003) Now the 'Drop zero events' suppresses completely histogramming into channel zero of any spectra.


Q: Please refresh me on what conditions in the ADC/ MPA-3 can result in counts (especially large numbers of counts) appearing in MPA-3 channel 0. The customer is experiencing this. How can he eliminate it?.

A: In short, these arise in coincidence mode when any ADC makes a Dead time signal but no Data Ready before the Data Ready Timeout. The reason can be either a too short Data Ready Timeout, which can be set in the ADC Settings dialog, or noise signals which are larger than the ADC threshold (about 120 mV for 7074 or 7072 ADCs) but below the Lower Level threshold. In case of noise it is recommended to turn the amplification down to assure that the noise signals are below 120 mV. A Lower Level Threshold higher than 120 mV is not recommended. It is possible to get rid of the zero events by crossing the checkbox "drop zero events" in the listmode box of the data operations dialog, but these events are then eliminated by software only, they are still in the data stream and produce dead time.


Add spectra

Q: How can I add two 1-D spectra together?

A: See page 5.3 in the manual. To add a particular spectra to another one, first save it into a file using "Save Display As..." from the MPANT File menu. Now open the Data Operations dialog, chose the "Selected Spectra" radio button and select the spectra to which you want to add the spectra on disk. Then "Browse" for the file you want to add and press the "Add" button. It is possible to shift the spectra according to an energy calibration before it is summed up if both spectra are calibrated and the checkbox "calibr." is crossed.


Q: I tried to add data and acquired data using "File/Add" function, but could not add the both data. What are the possible reasons?

A: It is possible to add spectra data from disk to spectra data in memory. All data formats are supported. From the MPANT file menu you can select Add... and select a .mpa file. Then all spectra contained in this .mpa file will be added to all corresponding spectra in memory. If you want to add only one special selected spectra, click on the displayed spectra in memory to make it the active window and chose Add... from the MPANT file menu. Then browse for a .mp spectrum file you want to add. Only that spectrum will then be summed up. The same functions are also available from the Data Operations dialog. Either select "MPA" for adding a complete data set, or "Selected Spectra" and chose one of the spectra in the drop-down list. You can also enable the "calibr." checkbox. If an energy calibration is available both in the spectra in memory and the spectra on disk, the spectra on disk will be shifted according to the energy calibration of the spectra in memory before summing up. 
This way it is possible together with the auto calibration to get stabilized spectra and reduce the peak width. The supplied script stab.ctl demonstrates how to do perform a spectra stabilization using this method. Of course it is necessary to have one or two well seperated known peaks in the spectra, to define ROIs around them and to enter an energy value for the peaks.


Q: Is it possible to define an ROI (maybe same, maybe different) in each of two spectra, and then add only those ROI together to form a sum, not the complete spectrum.

A: ROIs in dualparameter spectra can be projected to the x- or y-axis and the new spectra showing the ROI projection can then be saved into a seperated file using "Save Display As.." from the MPANT File menu. For ROIs in single spectra we have no such built-in capability in the software to save only counts within a ROI. But using the DLL interface it is possible to access counts within a ROI and process it, we have such examples included for LabVIEW.


MPA3.INI file

Q: With MPA-3, how is the polarity etc for a specific ADC setup? (Canberra 8715). The manual doesn't seem to cover this, unless we missed it.

A: Please look into the manual in chapter 5 for the description of the MPA3.INI file: the MPA3.INI contains the ADC port handshake signal polarities in a line polarity=..., see figure 5.2. Here is the snippet out of the MPA3.INI file shown in this figure:

;ADC Port Control Signal Polarities (hex): 
;1) polarity: [DENB;ENC;DACC;DEAD;DRDY]
; DRDY (bit 0) : 0 = active high, 1 = active low
; DEAD (bit 1) : 0 = active high, 1 = active low
; DACC (bit 2) : 0 = active high, 1 = active low
; ENC (bit 3) : 0 = active high, 1 = active low
; DENB (bit 4) : 0 = active low, 1 = active high
; Tracor Northern ADC's:
; ND 58x ADC's:
; Silena or Laben ADC's:
;polarity=13,13,13,13,13,13,13,13,13,13,13,13,13,13,13,13 ;
FAST or Canberra ADC's:

You may inspect also the ADC connection guide in the support section of our website. You will here find that the polarity parameter should be set to F for the 8715.


Q: I am writing this because I had a problem with our MPA-3 system. After installing the MPA software, including the system driver, the MPA3.EXE server started as normal and detected both the base and quad-port module. However, when an aquisition was started the program stopped responding to any key or mouse event, saying acquisition was still OFF. The process could only be killed using NT's task manager. At first I suspected problems with the new RT clock, but quickly realised that NT service pack 4 had been installed on the computer. And lo and behold, after "downgrading" NT back to service pack 3 everything worked normal again. I did not elaborate further on this to find the source of conflict. If you have som updated software/drivers/fix to this problem, please inform me.

A: please inspect your mpa3.ini file.

You will find the following lines:

; watchpriority for DMA transfer thread (between -1..2)

; set watchpriority=0 if your system hangs after start

; watchpriority=1

gives on most systems a better performance watchpriority=1 Please edit this line into watchpriority=0 By the way, you can download the latest MPANT software from our web-page. Look under support.


Installation Problems

Q: We followed the "Download instructions" slavely. Contrary to the instructions Windows 2000 did not ask automatically for a driver.

A: Windows asks for a driver if it finds a new hardware on start up. If you want to reinstall the driver you have to use the Device Manager. But it is usually not necessary, as the device driver is not changed with every update. Active ROI


Q: About "Asking for status via External Control returns the same number both for ROI and total spectrum". Now I understand what happens. I even knew that this region can be used for presets but can you tell me where in the manual it is stated that it is just this region and not the one observed on display that is sent to the remote computer ?

A: Well, you see the status information numbers in the status window at the left side of the MPANT window and also in the window of the server program. Here is for each ADC a line "ROI: xxx" pertaining to the special ROI that can be defined in the "ADC Settings and Presets" dialog (see manual pages 5-5, 5-6). This special ROI is named "Active ROI" and is also displayed in the dialog for editing ROIs, it can also be defined here or any selected ROI can be selected for the "Active ROI" by pressing the button "Make Active" (see in the manual on page 6-7). Of course the same status numbers are also sent over the net when asking for a status. Saving ROIs


Q: Continuing on the item ROI, namely polygonal ROI's. Where in the manual can I read about the way of saving and loading? I tried to save as... and then modify the offered PROI-name but I cannot find the files. Usual ROI's are retrieved with the configuration but I cannot retrieve more than one polygonal.

A: Ok let's just try: Load the demo data mix.mpa. Enlarge the dualparameter spectra "MBGO". Define here a circular ROI and a polygonal ROI. You can switch between the selected ROIs by pressing the '+' and '-' button from the numerical keypad (see manal pages 6-5, 6-6). Now save these polygonal ROI's: From the MPANT menu chose Region... Edit... to open the dialog for editing polygonal ROIs. Press the button "Save as..." and save it under the offered name "PROI.CTL" in your working directory C:\MPA3. Of course you can chose any other name or directory. You see that the ROIs are saved into a Control file like any settings and commands, they can also be reloaded like loading or executing any control file: Delete now your ROIs by pressing repeatedly the corresponding toolbar icon until you don't see any more any ROI when pressing the '+' key. And now reload the saved ROIs: From the MPANT File menu chose Load..., select as File Type "Control Files (*.CTL)" and select the C:\MPA3 directory and file PROI.CTL. Press "Open". Now your ROIs are loaded again. You see it if you press the '+' or '-' key from the numerical keypad to click again through the ROI's defined in that spectra. (See manual page 6-7). Now define some more polygonal ROIs. Finally save your data into a file named "mix1.mpa". All your ROI's are saved, not only one. Try deleting everything or reloading different data and finally loading your "mix1.mpa", you see that all ROIs were saved. You can also save it into a configuration file from the Setting Dialog, for example save your configuration into a file, say, "mix1.cnf".


Q: Is it possible to save the ROI information separately so that the ROI's can be used in other spectra?

A: The ROI information can be saved into a seperated file (default name roi.ctl) from the ROI editing dialog. This file can be loaded with File...Load to restore the roi information in the same spectra. If the ROI's should be used in another spectra, the file must be edited: Here is an example of such a file:

roi=1705 1733 
roi=2118 2149 
roi=2157 2183 
To move these ROI's from ADC4 (1C) into ADC1 (1A), change the first line into: 


Save Settings

Q: However, if you save a config. on the "Range, presets..." you are instructed not to give the extension "cnf". When you browse the available files you don't see it either. Is it then self evident that the "configfile" on the online help should look like the one above?

A: The "Browse" button can be used for inspecting the present configuration files and for selecting a name already present, but if you chose a new name from the Browse dialog you get a message that it is not present because this dialog is for opening existing files. But you can enter the name "mix1" directly into the edit line labeled "Setup name" and press "Save Sett.". Now again delete all spectra and reload the configuration. You will see that the spectra are defined again and also all polygonal ROIs are again present (use the '+' key). It is not true that you cannot retrieve more than one. DLL Programming


Q: I am able to start the server from my C++ program using the DLL function ServExec but I cannot get the status information. What I am doing wrong?

A: It is important that the DLL is loaded first by the Server program and that it is loaded from the same path by all programs using it. Otherwise it does not work to access the shared memory. In case your test program is not in C:\MPA3 I recommend to copy the dmpa3.dll into the Windows\System32 directory and delete it in C:\MPA3. Please make sure that there is nowhere else any file dmpa3.dll. Please remove then the ServExec(..) from your testprogram and start mpa3.exe by hand before starting your program, or by a call from your program for example like 

;{STARTUPINFO startupinfo = {0}


;startupinfo.cb = sizeof(STARTUPINFO)

;return CreateProcess


&startupinfo,&procinfo); }

, but before your program loads the DLL. Therefore I recommend not to link the DLL to your program using a dmpa3.LIB file, but explicitely load it at runtime as demonstrated in our example tstmpa3.c.


Printout, Plot

Q: A customer using an MPA-3 system wants to be able to e-mail a colleague a single spectra display and/or a single mapped display. What is your suggested method to do this? For example, you can print out a display using the print command in MPANT and this creates a "prnt1.wmf" windows metafile format. This file can be used in some application able to open that format. The programs I have that can do this seem to give me an error. Wordperfect gives me the error that the file is to big to open, stating it exceed 27 inches in width/height. Intellidraw, a vector graphic program from the year 1996 or so, opens the file but is not full displayed as it was printed (part of the display image is truncated, cut off). What programs that you know of can open this .wmf file correctly?

A: The best way to email such a plot is as a pdf file because everybody has the cost-free Acrobat Reader. If you have Adobe Acrobat, you can set the Acrobat PDFWriter as the default printer and this way print into a pdf file. If you don't have Acrobat you could make a postscript file by using any postscript printer as the default printer and printing into a file. This postscript file is usually rather big but it can be compressed as .zip and emailed to anybody who has Adobe Acrobat or something similar to the Acrobat Distiller that can produce a .pdf from the .ps file. A program that can reasonably open and display the .wmf file is ACDSee, but it is not as good as the pdf made by Acrobat and ACDSee is not so common and not cost-free. May be there are more programs, but I don't have many and cannot recommend any other ones that I have. If screen resolution is good enough, a simple way is of course to copy the active display window into the clipboard by pressing Alt-Print and then paste it into any painting program like Paintbrush (I prefer the PotoEd accompanying MS Office as it can handle a lot of formats). If it is then saved as .bmp file it will be rather large but it can be compressed as a .zip file for emailing.