/[PAMELA software]/DarthVader/TrackerLevel2/src/F77/functions.f
ViewVC logotype

Diff of /DarthVader/TrackerLevel2/src/F77/functions.f

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.2 by pam-fi, Fri Apr 27 10:39:58 2007 UTC revision 1.6 by pam-fi, Tue Nov 27 15:28:58 2007 UTC
# Line 1  Line 1 
1  *************************************************************************  ************************************************************************
2  *      *    
3  *     functions.f  *     functions.f
4  *      *    
# Line 133  c--------------------------------------- Line 133  c---------------------------------------
133        end        end
134    
135    
136    c------------------------------------------------------------------------
137    
138        function coordsi(istrip,view)        function coordsi(istrip,view)
139  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *  * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
# Line 163  c     NB mettere il 1024 nel commontrack Line 164  c     NB mettere il 1024 nel commontrack
164                
165        if(mod(view,2).eq.0) then !X view        if(mod(view,2).eq.0) then !X view
166    
167          if((is.le.3).or.(is.ge.1022)) then !X has 1018 strips...  c        if((is.le.3).or.(is.ge.1022)) then !X has 1018 strips...
168            print*,'functions: WARNING: false X strip: strip ',is  c          print*,'functions: WARNING: false X strip: strip ',is
169          endif  c        endif
170    
171          is=is-3                 !4 =< is =< 1021 --> 1 =< is =< 1018          is=is-3                 !4 =< is =< 1021 --> 1 =< is =< 1018
172    
# Line 234  c     NB mettere il 1024 nel commontrack Line 235  c     NB mettere il 1024 nel commontrack
235                
236        if(mod(view,2).eq.0) then !X view        if(mod(view,2).eq.0) then !X view
237    
238          if((is.le.3).or.(is.ge.1022)) then !X has 1018 strips...  c        if((is.le.3).or.(is.ge.1022)) then !X has 1018 strips...
239            print*,'functions: WARNING: false X strip: strip ',is  c          print*,'functions: WARNING: false X strip: strip ',is
240          endif  c        endif
241    
242          is=is-3                 !4 =< is =< 1021 --> 1 =< is =< 1018          is=is-3                 !4 =< is =< 1021 --> 1 =< is =< 1018
243    
# Line 274  ccccc coord1=(is-1)*p           !referre Line 275  ccccc coord1=(is-1)*p           !referre
275  c------------------------------------------------------------------------  c------------------------------------------------------------------------
276    
277    
278          double precision function dcoordsi(rstrip,view)
279    *
280    *     same as COORDSI, but accept a real value of strip!!!
281    *     and gives a double precision output
282    *
283    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
284    *     it gives the strip coordinate in micrometers,
285    *     knowing the strip number (1..3072) and the view
286    *     number. the origin of the coordinate is on the
287    *     centre of the sensor the strip belongs to.
288    *     the axes directions are the same as in the PAMELA
289    *     reference frame (i.e.: the 11th view coordinate
290    *     direction has to be inverted here)
291    * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
292    
293    c      integer is,view,istrip
294    
295          integer view,is,istrip
296          real rstrip
297          double precision strip,stripladder,p
298          double precision edge,dim
299          double precision coord1
300    
301    
302          include 'commontracker.f'
303    
304    c     NB mettere il 1024 nel commontracker...!???
305    
306          strip=DBLE(rstrip)
307    
308          istrip = int(strip+0.5)   !istrip stores the closest integer to strip      
309    
310          is=istrip                 !it stores istrip number
311          is=mod(is-1,1024)+1       !it puts all clusters on a single ladder
312          
313          dcoordsi=0.
314          
315          if(mod(view,2).eq.0) then !X view
316    
317    c        if((is.le.3).or.(is.ge.1022)) then !X has 1018 strips...
318    c          print*,'functions: WARNING: false X strip: strip ',is
319    c        endif
320    
321            is=is-3                 !4 =< is =< 1021 --> 1 =< is =< 1018
322    
323            edge=edgeX
324            dim=SiDimX
325    
326          elseif(mod(view,2).eq.1) then !Y view
327    
328            edge=edgeY
329            dim=SiDimY
330    
331    c$$$        if(view.eq.11) then     !INVERSIONE!???
332    c$$$          is=1025-is
333    c$$$        endif
334    
335          endif
336    
337    
338          stripladder = DBLE(is)+(strip-DBLE(istrip))!cluster position relative to ladder
339          p=pitch(view)
340    
341    ccccc coord1=(is-1)*p           !referred to 1st sensor strip
342          coord1=(stripladder-1)*p  !referred to 1st sensor strip
343          coord1=coord1+edge        !referred to sensor edge
344          dcoordsi=coord1-dim/2     !referred to the centre of the sensor
345    
346          if(view.eq.11) then       !INVERSION: it puts y axis in the same direction for all views
347            dcoordsi=-dcoordsi
348          endif
349          
350          end
351    
352    
353    
354    c------------------------------------------------------------------------
355    
356    
357        function coord(coordsi,view,ladder,sen)        function coord(coordsi,view,ladder,sen)
358  *     it gives the coordinate in  *     it gives the coordinate in
359  *     micrometers, knowing the coordinate in the sensor  *     micrometers, knowing the coordinate in the sensor
# Line 358  c$$$                                ! CO Line 438  c$$$                                ! CO
438    
439        dcoord=0.        dcoord=0.
440                
441          if(
442         $     ladder.lt.1.or.
443         $     ladder.gt.nladders_view.or.
444         $     sen.lt.1.or.
445         $     sen.gt.2.or.
446         $     view.lt.1.or.
447         $     view.gt.nviews.or.
448         $     .false.)then
449             print*,'dcoord ---> wrong input: ladder ',ladder
450         $        ,' sensor ',sen
451         $        ,' view ',view
452             return
453          endif
454    
455        sx=ladder        sx=ladder
456        sy=sen        sy=sen
457        sz=npl(view)        sz=npl(view)
458    
459    
460        if(mod(view,2).eq.0) then !X view        if(mod(view,2).eq.0) then !X view
461    
462          trasl=x_mech_sensor(sz,sx,sy) !in mm          trasl=x_mech_sensor(sz,sx,sy) !in mm
# Line 509  c     $              print*,' ======= ', Line 604  c     $              print*,' ======= ',
604              endif              endif
605           endif           endif
606                    
607           if(ncog.ge.5)then  c         if(ncog.ge.5)then
608              print*,'function CLBAD(NCOG,IC) ==> WARNING!! NCOG=',NCOG  c            print*,'function CLBAD(NCOG,IC) ==> WARNING!! NCOG=',NCOG
609       $           ,' not implemented'  c     $           ,' not implemented'
610           endif  c         endif
611                            
612        elseif(ncog.eq.0)then        elseif(ncog.eq.0)then
613  *     =========================  *     =========================
# Line 554  c$$$         enddo Line 649  c$$$         enddo
649                    
650        else        else
651                    
652           print*,'function CLBAD(NCOG,IC) ==> WARNING!! NCOG=',NCOG  c         print*,'function CLBAD(NCOG,IC) ==> WARNING!! NCOG=',NCOG
653       $        ,' not implemented'  c     $        ,' not implemented'
654                    
655    
656        endif        endif

Legend:
Removed from v.1.2  
changed lines
  Added in v.1.6

  ViewVC Help
Powered by ViewVC 1.1.23