08-mar-2006 NvE Time offset correction in IceF2k extended to allow also a user define...
authornick <nick@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 8 Mar 2006 09:39:48 +0000 (09:39 +0000)
committernick <nick@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 8 Mar 2006 09:39:48 +0000 (09:39 +0000)
                to cope with Monte Carlo data.

RALICE/icepack/iceconvert/IceF2k.cxx
RALICE/icepack/iceconvert/IceF2k.h
RALICE/icepack/iceconvert/history.txt

index 11761cd..beac0e1 100644 (file)
 // Note that the data structures are only written out if an outputfile has
 // been specified via the SetOutputFile memberfunction.
 // In case no outputfile has been specified, this class provides a facility
-// to investigate/analyse F2K data using the Ralice/IcePack analysis tools. 
+// to investigate/analyse F2K data using the Ralice/IcePack analysis tools.
+//
+// Note : Sometimes the filtering/reco process which produced the F2K file
+//        may have introduced a shift (i.e. offset) in the hit times w.r.t.
+//        the actual trigger time. The aim of this is to obtain the hit times
+//        centered more or less around zero.
+//        In case of real data, this is recorded in the F2K data itself and
+//        as such will be taken automatically into account by this IceF2k
+//        processor such that all times will be provided again unshifted.
+//        In other words, all times will be w.r.t. the actual trigger time
+//        as recorded in the trigger data device named "Trigger" in the IceEvent
+//        structure.
+//        In case of simulated data this shift is not available in the F2K data.
+//        The offset denoted in the F2K record is related to the time of the
+//        primary interaction to put it well ahead of the detector trigger.
+//        This primary interaction time, however, is irrelevant for the
+//        reconstruction of the recorded hit patterns. 
+//        If a user had introduced a shift in producing the MC data,
+//        very frequently (but not always) a value of -19000 is used.
+//        For the IceF2k processing, the user can manually introduce a
+//        time offset in case of MC data via the memberfunction SetMcToffset().
+//        This user defined offset value will then be used to correct all
+//        the hit times such that they will be provided again unshifted
+//        w.r.t. the actual trigger time as recorded in the device named 
+//        "Trigger" in the IceEvent structure.
+//        By default the MC time offset is set to 0 in the constructor
+//        of this class.
 //
 // Usage example :
 // ---------------
@@ -130,6 +156,8 @@ IceF2k::IceF2k(const char* name,const char* title) : AliJob(name,title)
  fOmdb=0;
  fFitdefs=0;
  fTrigdefs=0;
+ fToffset=0;
+ fMctoffset=0;
 }
 ///////////////////////////////////////////////////////////////////////////
 IceF2k::~IceF2k()
@@ -196,6 +224,14 @@ void IceF2k::SetBufferSize(Int_t bsize)
  if (bsize>=0) fBsize=bsize;
 }
 ///////////////////////////////////////////////////////////////////////////
+void IceF2k::SetMcToffset(Float_t toffset)
+{
+// Set a user defined time offset for Monte Carlo data.
+// A very frequently (but not always) used value is -19000.
+// See the introductory docs of this class for further details.
+ fMctoffset=toffset;
+}
+///////////////////////////////////////////////////////////////////////////
 void IceF2k::SetInputFile(TString name)
 {
 // Set the name of the F2K input file.
@@ -411,6 +447,11 @@ void IceF2k::Exec(Option_t* opt)
    evt->SetEventNumber(fEvent.enr);
    evt->SetMJD(fEvent.mjd,fEvent.secs,fEvent.nsecs);
 
+   // Take trigger offset into account which might have been
+   // introduced during the filtering process.
+   // For simulated data this will be treated separately in PutMcTracks().
+   fToffset=fEvent.t_offset;
+
    PutTrigger();
 
    PutMcTracks();
@@ -764,6 +805,12 @@ void IceF2k::PutMcTracks()
  IceEvent* evt=(IceEvent*)GetMainObject();
  if (!evt || fEvent.ntrack<=0) return;
 
+ // User defined trigger offset in case of simulated data.
+ // The offset in the F2K file is meant to put the primary interaction
+ // well ahead of the detector trigger.
+ // See the introductory docs of this IceF2k class for further details.
+ fToffset=fMctoffset;
+
  // Loop over all the tracks and add them to the current event
  AliTrack t;
  Double_t vec[3];
@@ -1014,7 +1061,7 @@ void IceF2k::PutHits()
   s.Reset();
   s.SetUniqueID(fEvent.h[i].id);
   s.SetSignal(fEvent.h[i].amp,1);
-  s.SetSignal((fEvent.h[i].t-fEvent.t_offset),2);
+  s.SetSignal((fEvent.h[i].t-fToffset),2);
   s.SetSignal(fEvent.h[i].tot,3);
 
   omx->AddHit(s);
index 8733d67..2311a8b 100644 (file)
@@ -34,6 +34,7 @@ class IceF2k : public AliJob
   void AddInputFile(TString name);                        // Add name of F2K input file to the list
   void SetOutputFile(TFile* ofile);                       // Set output file for the ROOT data structures       
   void SetOutputFile(TString name);                       // Create output file for the ROOT data structures
+  void SetMcToffset(Float_t toffset);                     // Set user defined time offset for MC data
   TFile* GetOutputFile();                                 // Provide pointer to the ROOT output file
   TDatabasePDG* GetPDG();           // Provide pointer to the PDG database
   AliObjMatrix* GetOMdbase();       // Provide pointer to the OM geometry, calib. etc... database
@@ -53,6 +54,8 @@ class IceF2k : public AliJob
   AliObjMatrix* fOmdb;  // Database of all OM devices with their geometry, calib. etc... data
   AliDevice* fFitdefs;  // Fit definitions as indicated in the header of the F2000 input file
   AliDevice* fTrigdefs; // Trigger definitions as indicated in the header of the F2000 input file
+  Float_t fToffset;     // Trigger time offset which might have been introduced during filtering
+  Float_t fMctoffset;   // Trigger time offset which might have been introduced during MC generation
 
   void FillOMdbase();   // Fill geometry and calib. parameters of all devices
   void SetFitdefs();    // Set the fit definitions as used in the F2000 input file
@@ -66,6 +69,6 @@ class IceF2k : public AliJob
   array   fHeader; //! Structure holding the file header info
   mevt    fEvent;  //! Structure holding the actual event data (hits, tracks, etc...)
 
- ClassDef(IceF2k,5) // Job for conversion of F2K data into IceEvent physics event structures.
+ ClassDef(IceF2k,6) // Job for conversion of F2K data into IceEvent physics event structures.
 };
 #endif
index f8fff4b..e536ea0 100644 (file)
@@ -52,4 +52,6 @@
 07-mar-2006 NvE Time offset correction introduced in IceF2k::PutHits() to account for
                 possible re-definition of hit times in the Sieglinde filtering process.
                 (Thanks David Boersma).
+08-mar-2006 NvE Time offset correction in IceF2k extended to allow also a user defined offset
+                to cope with Monte Carlo data.