14-mar-2006 NvE RemoveTracks() facilities introduced in AliJet.
authornick <nick@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 16 Mar 2006 09:50:41 +0000 (09:50 +0000)
committernick <nick@f7af4fe6-9843-0410-8265-dc069ae4e863>
Thu, 16 Mar 2006 09:50:41 +0000 (09:50 +0000)
14-mar-2006 NvE User defined track charge setting introduced in IceDwalk, IceLinefit and IcePandel.

RALICE/AliJet.cxx
RALICE/AliJet.h
RALICE/history.txt
RALICE/icepack/IceDwalk.cxx
RALICE/icepack/IceDwalk.h
RALICE/icepack/IceLinefit.cxx
RALICE/icepack/IceLinefit.h
RALICE/icepack/IcePandel.cxx
RALICE/icepack/IcePandel.h
RALICE/icepack/history.txt

index 5a7f9cd..c0c3432 100644 (file)
@@ -649,6 +649,68 @@ TObjArray* AliJet::GetTracks(TString name)
  return fSelected;
 }
 ///////////////////////////////////////////////////////////////////////////
+void AliJet::RemoveTracks(TString name)
+{
+// Remove all tracks with the specified name.
+// If name="*" all tracks will be removed.
+//
+// Note :
+// ------
+// In case the user has labeled reconstructed tracks with the name of
+// the applied reconstruction algorithm, this memberfunction provides
+// easy removal of all tracks reconstructed by a certain method.
+
+ if (!fTracks) return;
+
+ AliTrack* tx=0;
+ TString s;
+ TObject* obj=0;
+ for (Int_t i=0; i<fNtrk; i++)
+ {
+  tx=(AliTrack*)fTracks->At(i);
+  if (!tx) continue;
+
+  s=tx->GetName();
+  if (s==name || name=="*")
+  {
+   obj=fTracks->Remove(tx);
+   if (obj && fTracks->IsOwner()) delete tx;
+  }
+ }
+ fTracks->Compress();
+ fNtrk=fTracks->GetEntries();
+}
+///////////////////////////////////////////////////////////////////////////
+void AliJet::RemoveTracks(Int_t idmode,Int_t chmode,Int_t pcode)
+{
+// Remove user selected tracks based on the idmode, chmode and pcode
+// selections as specified by the user.
+// For defintions of these selections see the corresponding GetTracks()
+// memberfunction.
+
+ if (!fTracks) return;
+
+ TObjArray* arr=GetTracks(idmode,chmode,pcode);
+ if (!arr) return;
+ Int_t ntk=arr->GetEntries();
+ if (!ntk) return;
+
+ AliTrack* tx=0;
+ TObject* obj=0;
+ for (Int_t i=0; i<ntk; i++)
+ {
+  tx=(AliTrack*)arr->At(i);
+  if (!tx) continue;
+
+  obj=fTracks->Remove(tx);
+  if (obj && fTracks->IsOwner()) delete tx;
+ }
+ fTracks->Compress();
+ fNtrk=fTracks->GetEntries();
+ arr->Clear();
+}
+///////////////////////////////////////////////////////////////////////////
 void AliJet::ShowTracks(Int_t mode)
 {
 // Provide an overview of the available tracks.
index 536d701..2baa704 100644 (file)
@@ -38,6 +38,8 @@ class AliJet : public TNamed,public Ali4Vector
   AliTrack* GetIdTrack(Int_t id) const;    // Provide the track with user identifier "id"
   TObjArray* GetTracks(Int_t idmode=0,Int_t chmode=2,Int_t pcode=0); // Provide references to selected tracks
   TObjArray* GetTracks(TString name);      // Provide references to all tracks with a certain name
+  void RemoveTracks(Int_t idmode=0,Int_t chmode=2,Int_t pcode=0); // Remove selected tracks
+  void RemoveTracks(TString name);         // Remove all tracks with a certain name
   void ShowTracks(Int_t mode=1);           // Provide on overview of the available tracks
   Double_t GetPt();                        // Provide trans. momentum w.r.t. z-axis
   Double_t GetPl();                        // Provide long. momentum w.r.t. z-axis
@@ -68,6 +70,6 @@ class AliJet : public TNamed,public Ali4Vector
   AliPositionObj* fRef;                  // The reference-point of the jet
   TObjArray* fSelected;                  //! Temp. array to hold user selected or ordered objects
  
- ClassDef(AliJet,15) // Creation and investigation of a jet of particle tracks.
+ ClassDef(AliJet,16) // Creation and investigation of a jet of particle tracks.
 };
 #endif
index 51bd0a2..f2b330b 100644 (file)
 12-dec-2005 NvE Track selection by name introduced in AliJet.
 23-feb-2006 NvE Support for automatic subtask(s) execution introduced in AliJob::ExecuteJob().
 28-feb-2006 NvE Memberfunction ProcessObject() introduced in AliJob for convenience.
+14-mar-2006 NvE RemoveTracks() facilities introduced in AliJet.
index df66aab..093f3c4 100644 (file)
 //    SetTrackName() memberfunction. This will allow unique identification
 //    of tracks which are produced when re-processing existing data with
 //    different criteria.
+//    By default the charge of the produced tracks is set to 0, since
+//    no distinction can be made between positive or negative tracks.
+//    However, the user can define the track charge by invokation
+//    of the memberfunction SetCharge().
+//    This facility may be used to distinguish tracks produced by the
+//    various reconstruction algorithms in a (3D) colour display
+//    (see the class AliHelix for further details).  
 //
 //    Note : In case the maximum jet opening angle was specified <0,
 //           only the jet with the maximum number of tracks will appear
@@ -174,6 +181,7 @@ IceDwalk::IceDwalk(const char* name,const char* title) : TTask(name,title)
  fMaxmodA=999;
  fMinmodA=0;
  fTrackname="IceDwalk";
+ fCharge=0;
 }
 ///////////////////////////////////////////////////////////////////////////
 IceDwalk::~IceDwalk()
@@ -333,6 +341,15 @@ void IceDwalk::SetTrackName(TString s)
  fTrackname=s;
 }
 ///////////////////////////////////////////////////////////////////////////
+void IceDwalk::SetCharge(Float_t charge)
+{
+// Set user defined charge for the produced first guess tracks.
+// This allows identification of these tracks on color displays.
+// By default the produced first guess tracks have charge=0
+// which is set in the constructor of this class.
+ fCharge=charge;
+}
+///////////////////////////////////////////////////////////////////////////
 void IceDwalk::Exec(Option_t* opt)
 {
 // Implementation of the direct walk track reconstruction.
@@ -760,6 +777,7 @@ void IceDwalk::Exec(Option_t* opt)
  // the standard Sieglinde processing.
  AliTrack t; 
  t.SetNameTitle(fTrackname.Data(),"IceDwalk direct walk track");
+ t.SetCharge(fCharge);
  for (Int_t jet=0; jet<njets; jet++)
  {
   AliJet* jx=(AliJet*)jets2.At(jet);
index 93ee0b4..485b98e 100644 (file)
@@ -33,6 +33,7 @@ class IceDwalk : public TTask
   void SetMaxModA(Int_t nmax);   // Set max. number of good fired Amanda modules for events to be processed
   void SetMinModA(Int_t nmin);   // Set min. number of good fired Amanda modules for events to be processed
   void SetTrackName(TString s);  // Set (alternative) name for the produced first guess tracks
+  void SetCharge(Float_t charge);// Set user defined charge for the produced first guess tracks
 
  protected :
   Float_t fDmin;     // Minimum hit distance (in m) to form a track element 
@@ -46,7 +47,8 @@ class IceDwalk : public TTask
   Int_t fMaxmodA;    // The max. number of good fired Amanda modules for events to be processed
   Int_t fMinmodA;    // The min. number of good fired Amanda modules for events to be processed
   TString fTrackname;// The name identifier for the produced first guess tracks
+  Float_t fCharge;   // User defined charge of the produced first guess tracks
 
- ClassDef(IceDwalk,4) // TTask derived class to perform direct walk reconstruction
+ ClassDef(IceDwalk,5) // TTask derived class to perform direct walk reconstruction
 };
 #endif
index 0c71912..03775e2 100644 (file)
 // to 1 GeV. The mass and charge of the track are left 0.
 // The r0 and t0 can be obtained from the reference point of the track,
 // whereas the t0 ia also available from the track timestamp .
+// By default the charge of the produced tracks is set to 0, since
+// no distinction can be made between positive or negative tracks.
+// However, the user can define the track charge by invokation
+// of the memberfunction SetCharge().
+// This facility may be used to distinguish tracks produced by the
+// various reconstruction algorithms in a (3D) colour display
+// (see the class AliHelix for further details).  
 //
 // For further details the user is referred to NIM A524 (2004) 169.
 //
@@ -60,6 +67,7 @@ IceLinefit::IceLinefit(const char* name,const char* title) : TTask(name,title)
  fMaxmodA=999;
  fMinmodA=0;
  fTrackname="IceLinefit";
+ fCharge=0;
 }
 ///////////////////////////////////////////////////////////////////////////
 IceLinefit::~IceLinefit()
@@ -102,6 +110,15 @@ void IceLinefit::SetTrackName(TString s)
  fTrackname=s;
 }
 ///////////////////////////////////////////////////////////////////////////
+void IceLinefit::SetCharge(Float_t charge)
+{
+// Set user defined charge for the produced first guess tracks.
+// This allows identification of these tracks on color displays.
+// By default the produced first guess tracks have charge=0
+// which is set in the constructor of this class.
+ fCharge=charge;
+}
+///////////////////////////////////////////////////////////////////////////
 void IceLinefit::Exec(Option_t* opt)
 {
 // Implementation of the linefit reconstruction.
@@ -185,6 +202,7 @@ void IceLinefit::Exec(Option_t* opt)
 
  AliTrack t; 
  t.SetNameTitle(fTrackname.Data(),"IceLinefit linefit track");
+ t.SetCharge(fCharge);
  evt->AddTrack(t);
  AliTrack* trk=evt->GetTrack(evt->GetNtracks());
  if (!trk) return;
index 43f9b02..c00ab09 100644 (file)
@@ -23,12 +23,14 @@ class IceLinefit : public TTask
   void SetMaxModA(Int_t nmax);   // Set max. number of good fired Amanda modules for events to be processed
   void SetMinModA(Int_t nmin);   // Set min. number of good fired Amanda modules for events to be processed
   void SetTrackName(TString s);  // Set (alternative) name for the produced first guess tracks
+  void SetCharge(Float_t charge);// Set user defined charge for the produced first guess tracks
 
  protected :
   Int_t fMaxmodA;    // The max. number of good fired Amanda modules for events to be processed
   Int_t fMinmodA;    // The min. number of good fired Amanda modules for events to be processed
   TString fTrackname;// The name identifier for the produced first guess tracks
+  Float_t fCharge;   // User defined charge of the produced first guess tracks
 
- ClassDef(IceLinefit,1) // TTask derived class to perform linefit reconstruction
+ ClassDef(IceLinefit,2) // TTask derived class to perform linefit reconstruction
 };
 #endif
index fec494a..f392ed0 100644 (file)
 // SetTrackName() memberfunction. This will allow unique identification
 // of tracks which are produced when re-processing existing data with
 // different criteria.
+// By default the charge of the produced tracks is set to 0, since
+// no distinction can be made between positive or negative tracks.
+// However, the user can define the track charge by invokation
+// of the memberfunction SetCharge().
+// This facility may be used to distinguish tracks produced by the
+// various reconstruction algorithms in a (3D) colour display
+// (see the class AliHelix for further details).  
 // 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
@@ -123,6 +130,7 @@ IcePandel::IcePandel(const char* name,const char* title) : TTask(name,title)
  fHits=0;
  fFitter=0;
  fTrackname="IcePandel";
+ fCharge=0;
 
  // Set the global pointer to this instance
  gIcePandel=this;
@@ -356,6 +364,7 @@ void IcePandel::Exec(Option_t* opt)
    tkfit.Reset();
    ntkreco++;
    tkfit.SetId(ntkreco);
+   tkfit.SetCharge(fCharge);
    tkfit.SetParentTrack(fTrack);
    AliTimestamp* tt0=r0->GetTimestamp();
    pos.SetTimestamp(*tt0);
@@ -460,6 +469,15 @@ void IcePandel::SetTrackName(TString s)
  fTrackname=s;
 }
 ///////////////////////////////////////////////////////////////////////////
+void IcePandel::SetCharge(Float_t charge)
+{
+// Set user defined charge for the produced tracks.
+// This allows identification of these tracks on color displays.
+// By default the produced tracks have charge=0 which is set in the
+// constructor of this class.
+ fCharge=charge;
+}
+///////////////////////////////////////////////////////////////////////////
 void IcePandel::FitFCN(Int_t&,Double_t*,Double_t& f,Double_t* x,Int_t)
 {
 // The Pandel function used for the minimisation process.
index 6c6a6e0..6f114a8 100644 (file)
@@ -25,7 +25,8 @@ 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 SetTrackName(TString s);  // Set (alternative) name for the produced tracks
+  void SetCharge(Float_t charge);// Set user defined charge for the produced tracks
   void FitFCN(Int_t&,Double_t*,Double_t&,Double_t*,Int_t); // The minimisation FCN
 
  protected :
@@ -39,7 +40,8 @@ class IcePandel : public TTask
   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
+  Float_t fCharge;      // User defined charge of the produced tracks
 
- ClassDef(IcePandel,2) // TTask derived class to perform Pandel fitting
+ ClassDef(IcePandel,3) // TTask derived class to perform Pandel fitting
 };
 #endif
index 371ea83..0ef01bb 100644 (file)
@@ -59,3 +59,4 @@
                 Also specification of minimum number of good fired modules for events to
                 be processed introduced in IceDwalk. 
                 New class IceLinefit introduced.  
+14-mar-2006 NvE User defined track charge setting introduced in IceDwalk, IceLinefit and IcePandel.