APSF // Find the extended magnitude of DSOs and their detectability in the current telescope. // Add the info to user-defined columns. // Based on http://www.starastronomy.org/Library/collett.html // Paul Rodman, Nov 2006. function log10(x as double) as double return log(x)/log(10.0) end function dim MagE,size,MagV,limit as double, i,id as integer, usercols(-1),sm,sd as string dim UseApparentMag as boolean, MagVColumn, DetectColumn as integer usercols.Append "No" usercols.Append "User 1" usercols.Append "User 2" usercols.Append "User 3" usercols.Append "User 4" MagVColumn=RestoreIntegerValue("MagVColumn",1) DetectColumn=RestoreIntegerValue("DetectColumn",2) UseApparentMag=RestoreBooleanValue("UseApparentMag",false) if CurrentTelescope=nil then limit=0.0 SetCaptionParameter("No Telescope Specified",1,true) id=0 else limit = CurrentTelescope.MagnitudeLimit SetCaptionParameter("Telescope Magnitude Limit: "+format(limit,"-0.0")+".0:0",1,true) id=DetectColumn end if SetPopupParameter("Extended Mag (Ext.Mag)",MagVColumn,usercols) if id>0 then SetPopupParameter("Telescope Detectability (Detect)",id,usercols) SetBooleanParameter("Use Apparent Magnitude",UseApparentMag) if not EditParameters then return MagVColumn=GetPopupParameter("Extended Mag (Ext.Mag)") if id>0 then DetectColumn=GetPopupParameter("Telescope Detectability (Detect)") else DetectColumn=0 UseApparentMag=GetBooleanParameter("Use Apparent Magnitude") for i=1 to nObjects if UseApparentMag then MagV=Obj(i).ApparentMagnitude else MagV=Obj(i).Magnitude if MagV>0.0 and MagV<30.0 and Obj(i).Size1>0.0 then size = sqrt(Obj(i).Size1*Obj(i).Size2) MagE = MagV + 5.0*(log10(size*60.0)-log10(70.0)) sm=format(MagE,"-0.0") if limit=0.0 then sd = "" elseif MagE/limit<0.9 then sd = "Yes" elseif MagE/limit>1.1 then sd = "No" else sd = "?" end if else sm = "" sd = "" end if select case MagVColumn case 1 Obj(i).User1 = sm case 2 Obj(i).User2 = sm case 3 Obj(i).User3 = sm case 4 Obj(i).User4 = sm end select select case DetectColumn case 1 Obj(i).User1 = sd case 2 Obj(i).User2 = sd case 3 Obj(i).User3 = sd case 4 Obj(i).User4 = sd end select next if MagVColumn>0 then UserHeading(MagVColumn)="Ext.Mag" if DetectColumn>0 then UserHeading(DetectColumn)="Detect" SaveIntegerValue("MagVColumn",MagVColumn) SaveIntegerValue("DetectColumn",DetectColumn) SaveBooleanValue("UseApparentMag",UseApparentMag)