1 / 14

Particle ID in TRD Prashant Shukla Institute of Physics University of Heidelberg

Particle ID in TRD Prashant Shukla Institute of Physics University of Heidelberg. Presentation at TRD Software Meet 6Th Oct. at GSI. Implementaion of TRD PID: Presently in the EVENT SUMMARY DATA (ESD) tracks only total dE/dx from all TRD layers is included.

shona
Download Presentation

Particle ID in TRD Prashant Shukla Institute of Physics University of Heidelberg

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Particle ID in TRD Prashant Shukla Institute of Physics University of Heidelberg Presentation at TRD Software Meet 6Th Oct. at GSI

  2. Implementaion of TRD PID: Presently in the EVENT SUMMARY DATA (ESD) tracks only total dE/dx from all TRD layers is included. The aim is to include dE/dx signals from all 6 planes of TRD and also the time bin of maximum cluster from all 6 planes. The PID will be constructed with these 12 signals by liklihood method later.

  3. 1. AliTRDpidESD.cxx: The changes to be done in Bethe Block function are as follow: Double_t AliTRDpidESD::Bethe(Double_t bg) Double_t bg2=bg*bg; if (bg<3.5e1) bethe=(1.+ bg2)/bg2*(log(5940*bg2) - bg2/(1.+ bg2)); else // Density effect ( approximately :) bethe=(1.+ bg2)/bg2*(log(3.5*5940*bg) - bg2/(1.+ bg2)); return bethe/11.091; The factor 5940 -----> 2120 The factor 11.091------> 9.8957 The parameters for AliTRDpidESD are given by AliTRDReconstructor::FillESD(AliRunLoader*,AliESD* esd) Double_t parTRD[] = {187., 0.23, 10.}; // fMIP, fRes, fRange To be replaced by {165., 0.23, 10.};

  4. 2. Modifications in ESD track AliESDtrack.h: const Int_t kNPlane = AliTRDgeometry::Nplan(); Float_t fTRDsignal; // detector's PID signal // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS Float_t fTRDsignals[kNPlane]; // TRD signals from all six planes Int_t fTRDTimBin[kNPlane]; // Time bin of Max cluster from all six planes // ------------------------------------------------------------- Float_t GetTRDsignal() const {return fTRDsignal;} // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS Float_t GetTRDsignals(Int_t i) const {return fTRDsignals[i];} Int_t GetTRDTimBin(Int_t i) const {return fTRDTimBin[i];} // -------------------------------------------------------

  5. AliESDtrack.cxx: Bool_t AliESDtrack::UpdateTrackParams(AliKalmanTrack *t, ULong_t flags) // This function is called by // Int_t AliTRDtracker::Clusters2Tracks(AliESD* event) // Int_t AliTRDtracker::PropagateBack(AliESD* event) // Int_t AliTRDtracker::RefitInward(AliESD* event) : : : case kTRDin: case kTRDrefit: fTRDsignal=t->GetPIDsignal(); // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS for (Int_t i=0;i<kNPlane;i++){ fTRDsignals[i] = t->GetPIDsignals(i); fTRDTimBin[i] = t->GetPIDTimBin(i); } // ----------------------------------------------- AliESDtrack::AliESDtrack(const AliESDtrack& track):TObject(track) fTRDsignal=track.fTRDsignal; // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS for (Int_t i=0;i<kNPlane;i++) fTRDsignals[i]=track.fTRDsignals[i]; for (Int_t i=0;i<kNPlane;i++) fTRDTimBin[i]=track.fTRDTimBin[i]; //-----------------------------------------------------------

  6. 4. AliTRDtrack: AliTRDtrack.h const Int_t kNPlane = AliTRDgeometry::Nplan(); Float_t fdEdx; // dE/dx // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS Float_t fdEdxPlane[kNPlane]; // dE/dx from all 6 planes Int_t fTimBinPlane[kNPlane]; // time bin of Max cluster from all 6 planes // ---------------------------------------------------------------- Float_t fdQdl[kMAX_CLUSTERS_PER_TRACK]; // cluster amplitudes corrected for track angles // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS Int_t fPlaneNum[kMAX_CLUSTERS_PER_TRACK]; // corresponding Plane Number of clusters Int_t fTimeBin[kMAX_CLUSTERS_PER_TRACK]; // corresponding time bins of clusters // ------------------------------------------------------------------ // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS Float_t GetPIDsignals(Int_t i) const {return fdEdxPlane[i];} Int_t GetPIDTimBin(Int_t i) const {return fTimBinPlane[i];} // ---------------------------------------- void SetdEdx(Float_t dedx) {fdEdx=dedx;} // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS void SetdEdxTimBin(); // This is setting fdEdxPlane and fTimBinPlane // ------------------------------------------------------------------

  7. 4. AliTRDtrack.cxx void AliTRDtrack::CookdEdx(Double_t low, Double_t up) // This function is also called by BEFORE UpdateTrackParams // Int_t AliTRDtracker::Clusters2Tracks(AliESD* event) and // Int_t AliTRDtracker::PropagateBack(AliESD* event) // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS void SetdEdxTimBin(); // This is setting fdEdxPlane and fTimBinPlane //-------------------------------------------------------------- Int_t AliTRDtrack::Update(const AliTRDcluster *c, Double_t chisq, UInt_t index, Double_t h01) Int_t AliTRDtrack::UpdateMI(const AliTRDcluster *c, Double_t chisq, UInt_t index, Double_t h01, Int_t plane) // This function is called by // Int_t AliTRDtracker::FollowProlongation(AliTRDtrack& t, Int_t rf) // Int_t AliTRDtracker::FollowBackProlongation(AliTRDtrack& t) // Int_t AliTRDtracker::Refit(AliTRDtrack& t, Int_t rf) Int_t n=GetNumberOfClusters(); fIndex[n]=index; // *** ADDED TO GET MORE INFORMATION FOR TRD PID ---- PS fPlanNum[n] = plane; fTimBin[n] = c->GetLocalTimeBin(); //--------------------------------------------------

  8. 5. AliTRDtrack.cxx Copy Constructors AliTRDtrack::AliTRDtrack(const AliTRDcluster *c, UInt_t index, const Double_t xx[5], const Double_t cc[15], Double_t xref, Double_t alpha) : AliKalmanTrack() fdEdx=0.; for (Int_t i=0;i<kNPlane;i++){ fdEdxPlane[i] = 0.; fTimBinPlane[i] = 0.; } for(UInt_t i=1; i<kMAX_CLUSTERS_PER_TRACK; i++) { fdQdl[i] = 0; fIndex[i] = 0; fIndexBackup[i] = 0; //bacup indexes MI fPlaneNum[i] = 0; fTimeBin[i] = 0; } AliTRDtrack::AliTRDtrack(const AliTRDtrack& t) : AliKalmanTrack(t) AliTRDtrack::AliTRDtrack(const AliKalmanTrack& t, Double_t alpha) AliTRDtrack::AliTRDtrack(const AliESDtrack& t) fdEdx=t.fdEdx; for (Int_t i=0;i<kNPlane;i++){ fdEdxPlane[i] = t.fdEdxPlane[i]; fTimBinPlane[i] = t.fTimBinPlane[i]; } for (Int_t i=0; i<n; i++) { fIndex[i]=t.fIndex[i]; fIndexBackup[i]=t.fIndex[i]; // MI - backup indexes fdQdl[i]=t.fdQdl[i]; fPlaneNum[i] = t.fPlaneNum[i]; fTimeBin[i] = t.fTimeBin[i]; }

  9. void SetdEdxTimBin() { // Sums up the charge in each plane for track <t> and also get the // Time bin for Max. Cluster // const Int_t kNPlane = AliTRDgeometry::Nplan(); const Int_t kNPlane = 6; Double_t clscharge[kNPlane], nCluster[kNPlane], timebin[kNPlane], maxclscharge[kNPlane]; //Initialization of cluster charge per plane. for (Int_t iPlane = 0; iPlane < kNPlane; iPlane++) { clscharge[iPlane] = 0.0; nCluster[iPlane] = 0.0; timebin[iPlane] = 0.0; maxclscharge[iPlane] = 0.0; }

  10. // Loop through all clusters associated to track TRDtrack UInt_t nClus = GetNumberOfClusters(); // from Kalmantrack for (Int_t iClus = 0; iClus < nClus; iClus++) { Int_t iPlane = fPlaneNum[iClus]; Double_t charge = fdQdl[iClus]; Double_t tb = fTimeBin[iClus]; clscharge[iPlane]+ = charge; if(charge > maxclscharge[iPlane]) { maxclscharge[iPlane] = charge; timebin[iPlane] = tb; } nCluster[iPlane]++; } // end of loop over cluster // Setting the fdEdxPlane and fTimBinPlane variabales Double_t Total_ch = 0; for (Int_t iPlane = 0; iPlane < kNPlane; iPlane++) { fdEdxPlane[iPlane] = clscharge[iPlane]; fTimBinPlane[iPlane] = timebin[iPlane]; Total_ch+ = clscharge[iPlane]; }

  11. Total dE/dx e pi

  12. Cluster charge from one plane e pi

  13. HIJING cent1 event generated at CERN with Aliroot v4-02-04. The ESD from one event checked with CheckESD.C macro. gen\rec: electron muon pion kaon proton electron: 14 0 15 3 0 muon: 0 0 0 0 0 pion: 6 0 4388 45 7 kaon: 2 0 72 280 2 proton: 1 0 19 3 213 other: 0 0 0 0 0 TRD PID eff = (87.7 +- 0.5) % gen\rec: electron muon pion kaon proton electron: 0 0 32 0 0 muon: 0 0 0 0 0 pion: 0 0 4446 0 0 kaon: 0 0 356 0 0 proton: 0 0 236 0 0 other: 0 0 0 0 0

  14. HIJING cent1 event generated with Aliroot v4-02-06. The ESD from one event checked with CheckESD.C macro. gen\rec: electron muon pion kaon proton electron: 24 0 5 1 0 muon: 0 0 0 0 0 Pion: 33 0 5616 184 47 kaon: 7 0 162 316 16 proton: 7 0 47 3 283 other: 0 0 0 0 0 ONLY TRD PID gen\rec: electron muon pion kaon proton electron: 0 0 27 3 0 muon: 0 0 0 0 0 pion: 21 0 5350 268 241 kaon: 8 0 368 59 66 proton: 15 0 196 8 121 other: 0 0 0 0 0

More Related