Index: trunk/MagicSoft/Mars/mtemp/mifae/Changelog
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/Changelog	(revision 4073)
+++ trunk/MagicSoft/Mars/mtemp/mifae/Changelog	(revision 4074)
@@ -18,10 +18,11 @@
 
                                                  -*-*- END OF LINE -*-*-
-
+	
  2004/05/14  Javier Rico
    * library/MSrcPlace.[cc,h]
      - added
 
-   * library/MSrcPosFromFile.[cc,h], library/MSrcRotate.[cc,h]
+   * library/MSrcPosFromFile.[cc,h], library/MSrcRotate.[cc,h],
+     library/MSrcTranslate.[cc,h]
      - inherit from MSrcPlace
 
Index: trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcPosFromFile.cc
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcPosFromFile.cc	(revision 4073)
+++ trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcPosFromFile.cc	(revision 4074)
@@ -36,6 +36,4 @@
 
 #include <fstream>
-
-#include <TH2F.h>
 
 #include "MParList.h"
Index: trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcPosFromFile.h
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcPosFromFile.h	(revision 4073)
+++ trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcPosFromFile.h	(revision 4074)
@@ -36,6 +36,8 @@
     enum ReadMode_t {kCount=0,kRead};
 
-    MSrcPosFromFile(TString cardpath, OnOffMode_t mode=kOn, const char *name=NULL, const char *title=NULL);
+    MSrcPosFromFile(TString cardpath=0, OnOffMode_t mode=kOn, const char *name=NULL, const char *title=NULL);
     ~MSrcPosFromFile();
+
+    void SetInputFileName(TString fname) {fSourcePositionFilePath=fname;}
 
     ClassDef(MSrcPosFromFile, 0) // task to calculate the position of the source as a function of the run number 
Index: trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcTranslate.cc
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcTranslate.cc	(revision 4073)
+++ trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcTranslate.cc	(revision 4074)
@@ -32,4 +32,5 @@
 //  Input Containers:
 //    MSrcPosCam
+//    [MDCA]
 //
 //  Output Containers:
@@ -47,5 +48,4 @@
 #include "MSrcPosCam.h"
 #include "MDCA.h"
-
 
 #include "MLog.h"
@@ -66,11 +66,11 @@
 //
 MSrcTranslate::MSrcTranslate(const char* srcPos, const char* dca, const char *name, const char *title)
-  : fSrcPos(NULL), fDCA(NULL), fShiftX(0.), fShiftY(0.), fTranslationIsRelative(kTRUE)
+  : fShiftX(0.), fShiftY(0.), fTranslationIsRelative(kTRUE)
 {
     fName  = name  ? name  : gsDefName.Data();
     fTitle = title ? title : gsDefTitle.Data();
 
-    fSrcPosName  = srcPos;
-    fDCAName     = dca;
+    SetSrcPosName(srcPos);
+    SetDCAName(dca);
 }
 
@@ -81,23 +81,7 @@
 Int_t MSrcTranslate::PreProcess(MParList *pList)
 {
-    // look for/create MSrcPosCam
-  fSrcPos = (MSrcPosCam*)pList->FindObject(AddSerialNumber(fSrcPosName), "MSrcPosCam");
-  if (!fSrcPos)
-    {
-      *fLog << warn << AddSerialNumber(fSrcPosName) << " [MSrcPosCam] not found... creating default container." << endl;
-      fSrcPos = (MSrcPosCam*)pList->FindCreateObj("MSrcPosCam", AddSerialNumber(fSrcPosName));
-      if(!fSrcPos)
-	return kFALSE;
-    }
-
-  // look for/create MDCA
-  fDCA = (MDCA*)pList->FindObject(AddSerialNumber(fDCAName), "MDCA");
-  if (!fDCA)
-    {
-      *fLog << warn << AddSerialNumber(fDCAName) << " [MDCA] not found... creating default container." << endl;
-      fDCA = (MDCA*)pList->FindCreateObj("MDCA", AddSerialNumber(fDCAName));
-      if(!fDCA)
-	return kFALSE;
-    }
+  // look for/create MSrcPosCam and DCA
+  if(!SearchForSrcPos(pList))
+    return kFALSE;
 
   if(fShiftX==0. && fShiftY==0.)
@@ -111,12 +95,15 @@
 // Perform the translation of the source position 
 // 
-Int_t MSrcTranslate::Process()
+Int_t MSrcTranslate::ComputeNewSrcPosition()
 {  
   Double_t newX,newY;
 
+  MSrcPosCam* srcPos = GetSrcPosCam();
+  MDCA*       dca    = GetDCA();
+
   if(fTranslationIsRelative)
     {
-      newX=fSrcPos->GetX()+fShiftX;
-      newY=fSrcPos->GetY()+fShiftY;
+      newX=srcPos->GetX()+fShiftX;
+      newY=srcPos->GetY()+fShiftY;
     }
   else
@@ -126,7 +113,7 @@
     }
 
-  fSrcPos->SetX(newX);
-  fSrcPos->SetY(newY);
-  fDCA->SetRefPoint(newX,newY);
+  srcPos->SetX(newX);
+  srcPos->SetY(newY);
+  dca->SetRefPoint(newX,newY);
 
   return kTRUE;
Index: trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcTranslate.h
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcTranslate.h	(revision 4073)
+++ trunk/MagicSoft/Mars/mtemp/mifae/library/MSrcTranslate.h	(revision 4074)
@@ -2,41 +2,27 @@
 #define MARS_MSrcTranslate
 
-#ifndef MARS_MTask
-#include "MTask.h"
+#ifndef MARS_MSrcPlace
+#include "MSrcPlace.h"
 #endif
 
-#include <TArrayF.h>
-#include "MTime.h"
-#include "MSrcPosCam.h"
+class MSrcTranslate : public MSrcPlace
+{
+ private:
+  
+  Double_t fShiftX;
+  Double_t fShiftY;
+  Bool_t   fTranslationIsRelative;
+  
+  Int_t PreProcess(MParList *plist);
 
-class MDCA;
-class MObservatory;
-class MRawEvtHeader;
-class MRawRunHeader;
+ public:
+  MSrcTranslate(const char* src="MSrcPosCam", const char* dca="MDCA",
+		const char* name=NULL, const char* title=NULL);
+  
+  void SetTranslation(Double_t x=0.,Double_t y=0) {fShiftX=x,fShiftY=y;};
+  void SetRelativeTranslation(Bool_t inp=kTRUE) {fTranslationIsRelative=inp;};
+  virtual Int_t ComputeNewSrcPosition();
 
-class MSrcTranslate : public MTask
-{
-private:
-    MSrcPosCam*    fSrcPos;      //!  Pointer to the source position
-    MDCA*          fDCA;         //!  Pointer to the MDCA object
-
-    TString     fSrcPosName;
-    TString     fDCAName;
-
-    Double_t fShiftX;
-    Double_t fShiftY;
-    Bool_t   fTranslationIsRelative;
-
-    Int_t PreProcess(MParList *plist);
-    Int_t Process();
-
-public:
-    MSrcTranslate(const char* src="MSrcPosCam", const char* dca="MDCA",
-	       const char* name=NULL, const char* title=NULL);
-
-    void SetTranslation(Double_t x=0.,Double_t y=0) {fShiftX=x,fShiftY=y;};
-    void SetRelativeTranslation(Bool_t inp=kTRUE) {fTranslationIsRelative=inp;};
-
-    ClassDef(MSrcTranslate, 0) // task to rotate the position of the source as a function of Azimuth and Zenith angles
+  ClassDef(MSrcTranslate, 0) // task to rotate the position of the source as a function of Azimuth and Zenith angles
 };
 
Index: trunk/MagicSoft/Mars/mtemp/mifae/programs/srcPos.cc
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/programs/srcPos.cc	(revision 4073)
+++ trunk/MagicSoft/Mars/mtemp/mifae/programs/srcPos.cc	(revision 4074)
@@ -20,4 +20,5 @@
 #include "MHillasSrc.h"
 #include "MSrcRotate.h"
+#include "MSrcPosFromFile.h"
 #include "MSrcTranslate.h"
 #include "MParList.h"
@@ -47,5 +48,5 @@
 Float_t  xsrcpos=0.;
 Float_t  ysrcpos=0.;
-Double_t mjdpos=53050;
+Double_t mjdpos=0;
 Bool_t   kRotate=0;
 Bool_t   kSrcPolicy=kFALSE;
@@ -113,10 +114,20 @@
   read.DisableAutoScheme();  
 
-  MSrcTranslate srctranslate;
-  srctranslate.SetTranslation(xpos,ypos);
-  srctranslate.SetRelativeTranslation(kSrcPolicy);
-
-  MSrcRotate    srcrotate;
-  srcrotate.SetRAandDECandRefMJD(fRA,fDEC,mjdpos); 
+  MSrcTranslate   srctranslate;
+  MSrcRotate      srcrotate;
+  MSrcPosFromFile srcfromfile;
+
+  if(srcFile.Length())
+    {
+      srcfromfile.SetInputFileName(srcFile);
+      srcfromfile.SetMode(MSrcPlace::kOn);
+    }
+  else
+    {
+      srctranslate.SetTranslation(xpos,ypos);
+      srctranslate.SetRelativeTranslation(kSrcPolicy);
+      srcrotate.SetRAandDECandRefMJD(fRA,fDEC,mjdpos); 
+      srcrotate.SetMode(MSrcPlace::kOn);
+    }
 
   MHillasSrcCalc csrc1;	  
@@ -134,7 +145,12 @@
   // include tasks in task list
   tlist.AddToList(&read);
-  tlist.AddToList(&srctranslate);
-  if(kRotate) 
-    tlist.AddToList(&srcrotate);  
+  if(srcFile.Length())
+    tlist.AddToList(&srcfromfile);
+  else
+    {
+      tlist.AddToList(&srctranslate);
+      if(kRotate) 
+	tlist.AddToList(&srcrotate);  
+    }
   tlist.AddToList(&csrc1);  
   tlist.AddToList(&write);
@@ -170,5 +186,8 @@
   tlist.RemoveFromList(&write);
 
-  srcrotate.SetMode(MSrcPlace::kOff);
+  if(srcFile.Length())
+    srcfromfile.SetMode(MSrcPlace::kOff);
+  else
+    srcrotate.SetMode(MSrcPlace::kOff);
 
   if (!evtloop.Eventloop(nmaxevents))
Index: trunk/MagicSoft/Mars/mtemp/mifae/programs/srcpos.datacard
===================================================================
--- trunk/MagicSoft/Mars/mtemp/mifae/programs/srcpos.datacard	(revision 4073)
+++ trunk/MagicSoft/Mars/mtemp/mifae/programs/srcpos.datacard	(revision 4074)
@@ -31,6 +31,6 @@
 
 
-// File containing source position as a function of run number (overrides SRCPOS, SRCABS, ROTFLAG and SRCCOORDS values)
-// SRCFILE ./20040215_Mrk421.B.pos
+// File containing source position as a function of run number (invalidates SRCPOS, SRCABS, ROTFLAG and SRCCOORDS values)
+SRCFILE ./20040215_Mrk421.B.pos
 
 
