the produced tracks via the memberfunction SetTrackName().
Also specification of maximum number of good fired modules for events to
be processed introduced in IceDwalk.
// 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
fJangmax=fTangmax/2.;
fRjangmax=fRtangmax;
fRjdmax=fDmin;
+ fMaxmodA=999;
+ fTrackname="IceDwalk";
}
///////////////////////////////////////////////////////////////////////////
IceDwalk::~IceDwalk()
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.
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)
// 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);
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
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
// 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
fTrack=0;
fHits=0;
fFitter=0;
+ fTrackname="IcePandel";
// Set the global pointer to this instance
gIcePandel=this;
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;
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.
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 :
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
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.
multiple F2K input files.
The example in the IceF2k docs and in the /macros sub-directory has been
updated accordingly.
-