From ca142b1fdfeeb6901836766f3cca50533d6b3b72 Mon Sep 17 00:00:00 2001 From: hristov Date: Wed, 1 Mar 2006 15:57:17 +0000 Subject: [PATCH] Simulation and reconstruction of laser tracks (G.Renault) --- TPC/AliTPCLaser.cxx | 65 +++++++++++++++++++++++++++++++++++++++++ TPC/AliTPCLaser.h | 38 ++++++++++++++++++++++++ TPC/AliTPCtrackerMI.cxx | 37 +++++++++++++---------- TPC/TPCsimLinkDef.h | 1 + TPC/libTPCsim.pkg | 1 + 5 files changed, 126 insertions(+), 16 deletions(-) create mode 100644 TPC/AliTPCLaser.cxx create mode 100644 TPC/AliTPCLaser.h diff --git a/TPC/AliTPCLaser.cxx b/TPC/AliTPCLaser.cxx new file mode 100644 index 00000000000..cb65c295190 --- /dev/null +++ b/TPC/AliTPCLaser.cxx @@ -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 + +#include +#include +#include +#include + +#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 index 00000000000..d24fff9a4eb --- /dev/null +++ b/TPC/AliTPCLaser.h @@ -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 diff --git a/TPC/AliTPCtrackerMI.cxx b/TPC/AliTPCtrackerMI.cxx index 94778b20e2e..2952f546998 100644 --- a/TPC/AliTPCtrackerMI.cxx +++ b/TPC/AliTPCtrackerMI.cxx @@ -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.="<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)); diff --git a/TPC/TPCsimLinkDef.h b/TPC/TPCsimLinkDef.h index 54962c66dde..d927f1f527c 100644 --- a/TPC/TPCsimLinkDef.h +++ b/TPC/TPCsimLinkDef.h @@ -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 diff --git a/TPC/libTPCsim.pkg b/TPC/libTPCsim.pkg index bb39a0af48d..da1ab8ff5c8 100644 --- a/TPC/libTPCsim.pkg +++ b/TPC/libTPCsim.pkg @@ -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 -- 2.43.0