Simulation and reconstruction of laser tracks (G.Renault)
authorhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Mar 2006 15:57:17 +0000 (15:57 +0000)
committerhristov <hristov@f7af4fe6-9843-0410-8265-dc069ae4e863>
Wed, 1 Mar 2006 15:57:17 +0000 (15:57 +0000)
TPC/AliTPCLaser.cxx [new file with mode: 0644]
TPC/AliTPCLaser.h [new file with mode: 0644]
TPC/AliTPCtrackerMI.cxx
TPC/TPCsimLinkDef.h
TPC/libTPCsim.pkg

diff --git a/TPC/AliTPCLaser.cxx b/TPC/AliTPCLaser.cxx
new file mode 100644 (file)
index 0000000..cb65c29
--- /dev/null
@@ -0,0 +1,65 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+//
+///////////////////////////////////////////////////////////////////////////////
+//                                                                           //
+//  Laser for the TPChamber version 2 -- detailed TPC and slow simulation    //
+//                                                                           //
+///////////////////////////////////////////////////////////////////////////////
+
+#include <stdlib.h>
+
+#include <TLorentzVector.h>
+#include <TMath.h>
+#include <TPDGCode.h>
+#include <TVirtualMC.h>
+
+#include "AliConst.h"
+#include "AliLog.h"
+#include "AliMC.h"
+#include "AliRun.h"
+#include "AliTPCDigitsArray.h"
+#include "AliTPCParam.h"
+#include "AliTPCParamSR.h"
+#include "AliTPCTrackHitsV2.h"
+#include "AliTPCLaser.h"
+
+ClassImp(AliTPCLaser)
+//_____________________________________________________________________________
+AliTPCLaser::AliTPCLaser(const char *name, const char *title) :
+  AliTPCv2(name, title) 
+{
+  // only use the AliTPCv2 constructor
+}
+//______________________________________________________________
+void AliTPCLaser::StepManager()
+{
+  // laser tracks are muons (PID=13) 
+  // stopped in the the inner containment vessel (PID=14) 
+
+   TVirtualMC* mc = TVirtualMC::GetMC();
+   Int_t copy, vol;
+   vol = mc->CurrentVolID(copy);
+   // Debug
+   // printf("Vol name %s\n",mc->CurrentVolName());
+   if (mc->TrackPid() == 13 // muons
+       && vol == 14) {// 14 = TIIN (inner containment vessel)
+     mc->StopTrack();
+     return;
+   }
+   AliTPCv2::StepManager();   
+}
diff --git a/TPC/AliTPCLaser.h b/TPC/AliTPCLaser.h
new file mode 100644 (file)
index 0000000..d24fff9
--- /dev/null
@@ -0,0 +1,38 @@
+/**************************************************************************
+ * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ *                                                                        *
+ * Author: The ALICE Off-line Project.                                    *
+ * Contributors are mentioned in the code where appropriate.              *
+ *                                                                        *
+ * Permission to use, copy, modify and distribute this software and its   *
+ * documentation strictly for non-commercial purposes is hereby granted   *
+ * without fee, provided that the above copyright notice appears in all   *
+ * copies and that both the copyright notice and this permission notice   *
+ * appear in the supporting documentation. The authors make no claims     *
+ * about the suitability of this software for any purpose. It is          *
+ * provided "as is" without express or implied warranty.                  *
+ **************************************************************************/
+
+#ifndef ALITPCLASER_H
+#define ALITPCLASER_H
+
+////////////////////////////////////////////////
+//            Laser for TPCv2                 //
+////////////////////////////////////////////////
+
+#include "AliTPCv2.h"
+
+class AliTPCLaser : public AliTPCv2 {
+
+public:
+  AliTPCLaser() {}
+  AliTPCLaser(const char *name, const char *title);
+  virtual      ~AliTPCLaser() {}
+
+  virtual void  StepManager();
+  
+  ClassDef(AliTPCLaser,1)  // For Laser
+};
+
+#endif
index 94778b2..2952f54 100644 (file)
@@ -1395,7 +1395,7 @@ Int_t AliTPCtrackerMI::FollowToNext(AliTPCseed& t, Int_t nr) {
   if (fIteration>1) {t.fNFoundable++; return 0;}  // not look for new cluster during refitting
   //
   UInt_t index=0;
-  if (TMath::Abs(t.GetSnp())>0.95 || TMath::Abs(x*t.GetC()-t.GetEta())>0.95) return 0;
+  //  if (TMath::Abs(t.GetSnp())>0.95 || TMath::Abs(x*t.GetC()-t.GetEta())>0.95) return 0;// patch 28 fev 06
   Double_t  y=t.GetYat(x);
   if (TMath::Abs(y)>ymax){
     if (y > ymax) {
@@ -1608,14 +1608,14 @@ Int_t AliTPCtrackerMI::UpdateClusters(AliTPCseed& t,  Int_t nr) {
   Double_t  ymax= GetMaxY(nr);
 
   if (row < nr) return 1; // don't prolongate if not information until now -
-  if (TMath::Abs(t.GetSnp())>0.9 && t.GetNumberOfClusters()>40. && fIteration!=2) {
-    t.fRemoval =10;
-    return 0;  // not prolongate strongly inclined tracks
-  } 
-  if (TMath::Abs(t.GetSnp())>0.95) {
-    t.fRemoval =10;
-    return 0;  // not prolongate strongly inclined tracks
-  }
+//   if (TMath::Abs(t.GetSnp())>0.9 && t.GetNumberOfClusters()>40. && fIteration!=2) {
+//     t.fRemoval =10;
+//     return 0;  // not prolongate strongly inclined tracks
+//   } 
+//   if (TMath::Abs(t.GetSnp())>0.95) {
+//     t.fRemoval =10;
+//     return 0;  // not prolongate strongly inclined tracks
+//   }// patch 28 fev 06
 
   Double_t x= GetXrow(nr);
   Double_t y,z;
@@ -1833,7 +1833,7 @@ Int_t AliTPCtrackerMI::FollowBackProlongation(AliTPCseed& t, Int_t rf) {
   //
   if (first<0) first=0;
   for (Int_t nr=first; nr<=rf; nr++) {
-    if ( (TMath::Abs(t.GetSnp())>0.95)) break;
+    //    if ( (TMath::Abs(t.GetSnp())>0.95)) break;//patch 28 fev 06
     if (t.GetKinkIndexes()[0]<0){
       for (Int_t i=0;i<3;i++){
        Int_t index = t.GetKinkIndexes()[i];
@@ -2606,6 +2606,11 @@ Int_t AliTPCtrackerMI::PropagateBack(AliESD *event)
       Float_t dedx  = seed->GetdEdx();
       esd->SetTPCsignal(dedx, sdedx, ndedx);
       ntracks++;
+      Int_t eventnumber = event->GetEventNumber();// patch 28 fev 06
+      (*fDebugStreamer)<<"Cback"<<
+       "Tr0.="<<seed<<
+       "EventNr="<<eventnumber<<
+       "\n"; // patch 28 fev 06   
     }
   }
   //FindKinks(fSeeds,event);
@@ -5755,7 +5760,11 @@ void AliTPCtrackerMI::SumTracks(TObjArray *arr1,TObjArray *arr2) const
   for (Int_t i=0;i<nseed;i++){
     AliTPCseed *pt=(AliTPCseed*)arr2->UncheckedAt(i);    
     if (pt){
-      
+       // REMOVE VERY SHORT  TRACKS
+      if (pt->GetNumberOfClusters()<20){ 
+       delete arr2->RemoveAt(i);
+       continue;
+      }// patch 28 fev06
       // NORMAL ACTIVE TRACK
       if (pt->IsActive()){
        arr1->AddLast(arr2->RemoveAt(i));
@@ -5766,11 +5775,7 @@ void AliTPCtrackerMI::SumTracks(TObjArray *arr1,TObjArray *arr2) const
        delete arr2->RemoveAt(i);
        continue;
       }
-      // REMOVE VERY SHORT  TRACKS
-      if (pt->GetNumberOfClusters()<20){ 
-       delete arr2->RemoveAt(i);
-       continue;
-      }
+     
       // ENABLE ONLY ENOUGH GOOD STOPPED TRACKS
       if (pt->GetDensityFirst(20)>0.8 || pt->GetDensityFirst(30)>0.8 || pt->GetDensityFirst(40)>0.7)
        arr1->AddLast(arr2->RemoveAt(i));
index 54962c6..d927f1f 100644 (file)
@@ -14,6 +14,7 @@
 #pragma link C++ class AliTPCv1+;
 #pragma link C++ class AliTPCv2+;
 #pragma link C++ class AliTPCv3+;
+#pragma link C++ class AliTPCLaser+;
 
 //#pragma link C++ class AliTrackHitsInfo+;    // defined in AliTPCTrackHits.h
 //#pragma link C++ class AliTrackHitsParam+;   // defined in AliTPCTrackHits.h
index bb39a0a..da1ab8f 100644 (file)
@@ -1,5 +1,6 @@
 SRCS:=  AliTPC.cxx \
         AliTPCv0.cxx AliTPCv1.cxx AliTPCv2.cxx AliTPCv3.cxx \
+        AliTPCLaser.cxx \
         AliTPCTrackHitsV2.cxx \
         AliTPCDigitizer.cxx \
         AliTPCBuffer.cxx AliTPCDDLRawData.cxx