07-mar-2006 NvE Facility introduced in IceDwalk and IcePandel to modify the name...
authornick <nick@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 7 Mar 2006 09:21:57 +0000 (09:21 +0000)
committernick <nick@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 7 Mar 2006 09:21:57 +0000 (09:21 +0000)
                the produced tracks via the memberfunction SetTrackName().
                Also specification of maximum number of good fired modules for events to
                be processed introduced in IceDwalk.

RALICE/icepack/IceDwalk.cxx
RALICE/icepack/IceDwalk.h
RALICE/icepack/IcePandel.cxx
RALICE/icepack/IcePandel.h
RALICE/icepack/history.txt
RALICE/icepack/iceconvert/history.txt

index b56dbee..a748e2c 100644 (file)
 // This will not only provide a means to reconstruct muon bundles and
 // multiple track events in IceCube, but will also allow to reduce the
 // background of faked upgoing muons as a result of multiple downgoing
-// muons hitting the top and bottom parts of the detector. 
+// muons hitting the top and bottom parts of the detector.
+// To prevent waisting CPU time in trying to reconstruct (high-energy) cascade
+// events, or to select specifically reconstruction of low multiplicity events,
+// the user may invoke the memberfunction SetMaxModA(). This allows selection
+// of events for processing with a certain maximum number of good Amanda OMs
+// firing. By default this maximum is set to 999 in the constructor, which
+// implies no multiplicity selection. 
 // The various reconstruction steps are summarised as follows :
 //
 // 1) Construction of track elements (TE's).
 //    to 1 GeV. The mass and charge of the track are left 0.
 //    The reference point data of the jet will provide the r0 and t0
 //    (i.e. reference point) of the track.
-//    All these tracks will be stored in the IceEvent structure with "IceDwalk"
-//    as the name of the track.
+//
+//    All these tracks will be stored in the IceEvent structure with as
+//    default "IceDwalk" as the name of the track.
+//    This track name identifier can be modified by the user via the
+//    SetTrackName() memberfunction. This will allow unique identification
+//    of tracks which are produced when re-processing existing data with
+//    different criteria.
 //
 //    Note : In case the maximum jet opening angle was specified <0,
 //           only the jet with the maximum number of tracks will appear
@@ -159,6 +170,8 @@ IceDwalk::IceDwalk(const char* name,const char* title) : TTask(name,title)
  fJangmax=fTangmax/2.;
  fRjangmax=fRtangmax;
  fRjdmax=fDmin;
+ fMaxmodA=999;
+ fTrackname="IceDwalk";
 }
 ///////////////////////////////////////////////////////////////////////////
 IceDwalk::~IceDwalk()
@@ -283,6 +296,29 @@ void IceDwalk::SetRjdmax(Float_t d)
  fRjdmax=d;
 }
 ///////////////////////////////////////////////////////////////////////////
+void IceDwalk::SetMaxModA(Int_t nmax)
+{
+// Set the maximum number of good Amanda modules that may have fired
+// in order to process this event.
+// This allows suppression of processing (high-energy) cascade events
+// with this direct walk tracking to prevent waisting cpu time for cases
+// in which tracking doesn't make sense anyhow.
+// Furthermore it allows selection of low multiplicity events for processing.
+// By default the maximum number of Amanda modules is set to 999 in the ctor,
+// which implies no selection on module multiplicity.
+ fMaxmodA=nmax;
+}
+///////////////////////////////////////////////////////////////////////////
+void IceDwalk::SetTrackName(TString s)
+{
+// Set (alternative) name identifier for the produced first guess tracks.
+// This allows unique identification of (newly) produced direct walk tracks
+// in case of re-processing of existing data with different criteria.
+// By default the produced first guess tracks have the name "IceDwalk"
+// which is set in the constructor of this class.
+ fTrackname=s;
+}
+///////////////////////////////////////////////////////////////////////////
 void IceDwalk::Exec(Option_t* opt)
 {
 // Implementation of the direct walk track reconstruction.
@@ -300,6 +336,17 @@ void IceDwalk::Exec(Option_t* opt)
  Int_t naoms=aoms->GetEntries();
  if (!naoms) return;
 
+ // Check for the maximum number of good fired Amanda OMs
+ Int_t ngood=0;
+ for (Int_t iom=0; iom<naoms; iom++)
+ {
+  IceGOM* omx=(IceGOM*)aoms->At(iom);
+  if (!omx) continue;
+  if (omx->GetDeadValue("ADC") || omx->GetDeadValue("LE") || omx->GetDeadValue("TOT")) continue;
+  ngood++;
+ } 
+ if (ngood>fMaxmodA) return;
+
  const Float_t c=0.3;                // Light speed in vacuum in meters per ns
  const Float_t nice=1.33;            // Refractive index of ice
  const Float_t thetac=acos(1./nice); // Cherenkov angle (in radians)
@@ -698,7 +745,7 @@ void IceDwalk::Exec(Option_t* opt)
  // will be used to form a track. This will allow comparison with
  // the standard Sieglinde processing.
  AliTrack t; 
- t.SetNameTitle("IceDwalk","Direct walk track");
+ t.SetNameTitle(fTrackname.Data(),"IceDwalk direct walk track");
  for (Int_t jet=0; jet<njets; jet++)
  {
   AliJet* jx=(AliJet*)jets2.At(jet);
index 37168d7..1dff443 100644 (file)
@@ -30,6 +30,8 @@ class IceDwalk : public TTask
   void SetJangmax(Float_t ang);  // Set max. angular separation for jet merging into 1 single track
   void SetRjangmax(Float_t ang); // Set max. angular separation for relative r0 direction for jet merging
   void SetRjdmax(Float_t d);     // Set maximum r0 distance for jet merging
+  void SetMaxModA(Int_t nmax);   // Set maximum number of good fired Amanda modules for event processing
+  void SetTrackName(TString s);  // Set (alternative) name for the produced first guess tracks
 
  protected :
   Float_t fDmin;     // Minimum hit distance (in m) to form a track element 
@@ -40,7 +42,9 @@ class IceDwalk : public TTask
   Float_t fJangmax;  // Angular separation (in deg) within which jets are merged into 1 single track
   Float_t fRjangmax; // Relative r0 angular separation (in deg) for jet clustering
   Float_t fRjdmax;   // Maximum r0 distance (in m) for jet merging
+  Int_t fMaxmodA;    // The max. number of good fired Amanda modules for event processing
+  TString fTrackname;// The name identifier for the produced first guess tracks
 
- ClassDef(IceDwalk,2) // TTask derived class to perform direct walk reconstruction
+ ClassDef(IceDwalk,3) // TTask derived class to perform direct walk reconstruction
 };
 #endif
index 50eb714..fec494a 100644 (file)
 // macro icepandel.cc which resides in the /macros subdirectory.
 // 
 // The minimisation results are stored in the IceEvent structure as
-// tracks with name "IcePandel" (just like the first guess results
-// of e.g. IceDwalk).
+// tracks with as default the name "IcePandel" (just like the first guess
+// results of e.g. IceDwalk).
+// This track name identifier can be modified by the user via the
+// SetTrackName() memberfunction. This will allow unique identification
+// of tracks which are produced when re-processing existing data with
+// different criteria.
 // A pointer to the first guess track which was used as input is available
 // via the GetParentTrack facility of these "IcePandel" tracks.
 // Furthermore, all the hits that were used in the minisation are available
@@ -118,6 +122,7 @@ IcePandel::IcePandel(const char* name,const char* title) : TTask(name,title)
  fTrack=0;
  fHits=0;
  fFitter=0;
+ fTrackname="IcePandel";
 
  // Set the global pointer to this instance
  gIcePandel=this;
@@ -221,15 +226,15 @@ void IcePandel::Exec(Option_t* opt)
  Ali3Vector p;
  AliPosition pos;
  AliTrack tkfit;
- tkfit.SetNameTitle("IcePandel","Pandel fit result");
+ tkfit.SetNameTitle(fTrackname.Data(),"IcePandel fit result");
  AliSignal fitstats;
  fitstats.SetNameTitle("Fitstats","TFitter stats for Pandel fit");
  fitstats.SetSlotName("IER",1);
  fitstats.SetSlotName("FCN",2);
  fitstats.SetSlotName("EDM",3);
  fitstats.SetSlotName("NVARS",4);
- Float_t x,y,z,r,theta,phi;
- Float_t xmin,xmax,ymin,ymax,zmin,zmax,rmin,rmax,thetamin,thetamax,phimin,phimax;
+ Float_t x,y,z,theta,phi;
+ Float_t xmin,xmax,ymin,ymax,zmin,zmax,thetamin,thetamax,phimin,phimax;
  Double_t amin,edm,errdef; // Minimisation stats
  Int_t ier,nvpar,nparx;    // Minimisation stats
  Int_t ntk=0;
@@ -445,6 +450,16 @@ void IcePandel::SelectHits(Int_t mode)
  if (mode==0 || mode==1) fSelhits=mode;
 }
 ///////////////////////////////////////////////////////////////////////////
+void IcePandel::SetTrackName(TString s)
+{
+// Set (alternative) name identifier for the produced tracks.
+// This allows unique identification of (newly) produced pandel tracks
+// in case of re-processing of existing data with different criteria.
+// By default the produced tracks have the name "IcePandel" which is
+// set in the constructor of this class.
+ fTrackname=s;
+}
+///////////////////////////////////////////////////////////////////////////
 void IcePandel::FitFCN(Int_t&,Double_t*,Double_t& f,Double_t* x,Int_t)
 {
 // The Pandel function used for the minimisation process.
index 852bf09..6c6a6e0 100644 (file)
@@ -25,6 +25,7 @@ class IcePandel : public TTask
   void SetPrintLevel(Int_t level);                     // Set the fitter (Minuit) printlevel
   void UseTracks(TString classname,Int_t n=-1);        // Specify first guess tracks to be used
   void SelectHits(Int_t mode=1);                       // Specify which hits to be used
+  void SetTrackName(TString s); // Set (alternative) name for the produced tracks
   void FitFCN(Int_t&,Double_t*,Double_t&,Double_t*,Int_t); // The minimisation FCN
 
  protected :
@@ -37,7 +38,8 @@ class IcePandel : public TTask
   AliTrack* fTrack;     // Pointer to the first guess track being processed
   TObjArray* fHits;     // The various hits to be used in the fitting process 
   TFitter* fFitter;     // Pointer to the minimisation processor
+  TString fTrackname;   // The name identifier for the produced tracks
 
- ClassDef(IcePandel,1) // TTask derived class to perform Pandel fitting
+ ClassDef(IcePandel,2) // TTask derived class to perform Pandel fitting
 };
 #endif
index 579f7a6..f10cb70 100644 (file)
                 from a chain of ROOT files using the task processor facilities.
 28-feb-2006 NvE Example macro anaroot.cc in sub-directory /macros updated to use the
                 more convenient new ProcessObject() facility of AliJob.
+                Also unused variables r, rmin and rmax removed in IcePandel.cxx to prevent
+                compiler warnings. 
+07-mar-2006 NvE Facility introduced in IceDwalk and IcePandel to modify the name tag of
+                the produced tracks via the memberfunction SetTrackName().
+                Also specification of maximum number of good fired modules for events to
+                be processed introduced in IceDwalk. 
 
index 42779ad..edeb89d 100644 (file)
@@ -49,4 +49,3 @@
                 multiple F2K input files.
                 The example in the IceF2k docs and in the /macros sub-directory has been
                 updated accordingly.