]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/AliTPCcalibTracks.cxx
Net Particle updates (Jochen Thaeder <jochen@thaeder.de>)
[u/mrichter/AliRoot.git] / TPC / AliTPCcalibTracks.cxx
index 81be08f1edbf6274d0d3d6f40131892d56790b61..39d8f4919eec5828bbbbecc6dd1b025c0ea859a0 100644 (file)
@@ -152,8 +152,10 @@ using namespace std;
 #include "TCut.h"
 #include "THnSparse.h"
 #include "AliRieman.h"
+#include "TRandom.h"
 
 
+Double_t          AliTPCcalibTracks::fgkMergeEntriesCut=10000000.; //10**7 clusters
 
 ClassImp(AliTPCcalibTracks)
 
@@ -168,6 +170,8 @@ AliTPCcalibTracks::AliTPCcalibTracks():
   fHisRMSZ(0),      // THnSparse - rms Z 
   fHisQmax(0),      // THnSparse - qmax 
   fHisQtot(0),      // THnSparse - qtot 
+  fPtDownscaleRatio(20),       // pt downscaling ratio (use subsample of data)
+  fQDownscaleRatio(20),        // Q downscaling ratio (use subsample of dta)
   fArrayQDY(0), 
   fArrayQDZ(0), 
   fArrayQRMSY(0),
@@ -200,6 +204,8 @@ AliTPCcalibTracks::AliTPCcalibTracks(const AliTPCcalibTracks& calibTracks):
   fHisRMSZ(0),      // THnSparse - rms Z 
   fHisQmax(0),      // THnSparse - qmax 
   fHisQtot(0),      // THnSparse - qtot 
+  fPtDownscaleRatio(20),       // pt downscaling ratio (use subsample of data)
+  fQDownscaleRatio(20),        // Q downscaling ratio (use subsample of dta)
   fArrayQDY(0), 
   fArrayQDZ(0), 
   fArrayQRMSY(0),
@@ -284,6 +290,8 @@ AliTPCcalibTracks::AliTPCcalibTracks(const Text_t *name, const Text_t *title, Al
   fHisRMSZ(0),      // THnSparse - rms Z 
   fHisQmax(0),      // THnSparse - qmax 
   fHisQtot(0),      // THnSparse - qtot 
+  fPtDownscaleRatio(20),       // pt downscaling ratio (use subsample of data)
+  fQDownscaleRatio(20),        // Q downscaling ratio (use subsample of dta)
   fArrayQDY(0), 
   fArrayQDZ(0), 
   fArrayQRMSY(0),
@@ -467,6 +475,10 @@ void AliTPCcalibTracks::Process(AliTPCseed *track){
    // FillResolutionHistoLocal(track)
 
    // 
+  Double_t scalept= TMath::Min(1./TMath::Abs(track->GetParameter()[4]),2.)/0.5;
+  Bool_t   isSelected = (TMath::Exp(scalept)>fPtDownscaleRatio*gRandom->Rndm());
+  if (!isSelected) return;
+
   if (GetDebugLevel() > 5) Info("Process","Starting to process the track...");
    Int_t accpetStatus = AcceptTrack(track);
    if (accpetStatus == 0) {
@@ -660,6 +672,7 @@ void  AliTPCcalibTracks::FillResolutionHistoLocal(AliTPCseed * track){
   // mean chi^2 for all tracklet fits in Y and in Z direction: 
   csigmaY = TMath::Sqrt(TMath::Abs(csigmaY) / (nTrackletsAll+0.1));
   csigmaZ = TMath::Sqrt(TMath::Abs(csigmaZ) / (nTrackletsAll+0.1));
+  if (csigmaY<=TMath::KUncertainty() || csigmaZ<= TMath::KUncertainty()) return;
   // ---------------------------------------------------------------------
   //
   //
@@ -741,8 +754,8 @@ void  AliTPCcalibTracks::FillResolutionHistoLocal(AliTPCseed * track){
                                               riemanFitAngle.GetDYat(currentCluster->GetX())
                                               );       
       }
-     riemanFit.AddPoint(currentCluster->GetX(), currentCluster->GetY()-dY,currentCluster->GetZ(), csigmaY,csigmaZ);
-      riemanFitW.AddPoint(currentCluster->GetX(), currentCluster->GetY()-dY,currentCluster->GetZ(), csigmaY*TMath::Sqrt(1+TMath::Abs(idelta)),csigmaZ*TMath::Sqrt(1+TMath::Abs(idelta)));
+      riemanFit.AddPoint(currentCluster->GetX(), currentCluster->GetY()-dY,currentCluster->GetZ(), csigmaY,csigmaZ);
+      riemanFitW.AddPoint(currentCluster->GetX(), currentCluster->GetY()-dY,currentCluster->GetZ(), TMath::Abs(csigmaY*TMath::Sqrt(1+TMath::Abs(idelta))),TMath::Abs(csigmaZ*TMath::Sqrt(1+TMath::Abs(idelta))));
     }  // loop over neighbourhood for fitter filling 
     if (nclFound < kDelta * kMinRatio) fRejectedTracksHisto->Fill(10);
     if (nclFound < kDelta * kMinRatio) fClusterCutHisto->Fill(1, irow);
@@ -856,6 +869,9 @@ void  AliTPCcalibTracks::FillResolutionHistoLocal(AliTPCseed * track){
     //
     // Fill THN histograms
     //
+    Double_t scaleQ= TMath::Min(Double_t(cluster0->GetMax()),200.)/30.;
+    Bool_t   isSelected = (TMath::Exp(scaleQ)>fQDownscaleRatio*gRandom->Rndm());
+    if (!isSelected) continue;
     Double_t xvar[9];
     xvar[1]=padSize;   // pad type 
     xvar[2]=cluster0->GetZ();  // 
@@ -1541,6 +1557,8 @@ void    AliTPCcalibTracks::AddHistos(AliTPCcalibTracks* calib){
   //
   // Add histograms
   //
+  if (!calib->fHisDeltaY) return;
+  if (calib->fHisDeltaY->GetEntries()> fgkMergeEntriesCut) return; 
   if (calib->fHisDeltaY) fHisDeltaY->Add(calib->fHisDeltaY);
   if (calib->fHisDeltaZ) fHisDeltaZ->Add(calib->fHisDeltaZ);
   if (calib->fHisRMSY)   fHisRMSY->Add(calib->fHisRMSY);