]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - CORRFW/AliCFTrackQualityCuts.cxx
added mono-cathods removal in real Pb-Pb settings
[u/mrichter/AliRoot.git] / CORRFW / AliCFTrackQualityCuts.cxx
index 2d94f1fc356eb7a97b6720894287d5f8222ea94c..44700b5da8ea42e8fd48cfc3ae5b398955a8e97d 100644 (file)
@@ -435,13 +435,19 @@ void AliCFTrackQualityCuts::SelectionBitMap(TObject* obj)
     return;
   }
 
-  Bool_t isESDTrack = strcmp(obj->ClassName(),"AliESDtrack") == 0 ? kTRUE : kFALSE ;
-  Bool_t isAODTrack = strcmp(obj->ClassName(),"AliAODTrack") == 0 ? kTRUE : kFALSE ;
+  AliESDtrack * esdTrack = dynamic_cast<AliESDtrack*>(obj);
+  AliAODTrack * aodTrack = dynamic_cast<AliAODTrack*>(obj);
 
-  AliESDtrack * esdTrack = 0x0 ;
-  AliAODTrack * aodTrack = 0x0 ; 
-  if (isESDTrack) esdTrack = dynamic_cast<AliESDtrack*>(obj);
-  if (isAODTrack) aodTrack = dynamic_cast<AliAODTrack*>(obj);
+  if (!(esdTrack || aodTrack)) {
+    AliError("object must be an ESDtrack or an AODtrack !");
+    return;
+  }
+
+  Bool_t isESDTrack = kFALSE;
+  Bool_t isAODTrack = kFALSE;
+
+  if (esdTrack) isESDTrack = strcmp(obj->ClassName(),"AliESDtrack") == 0 ? kTRUE : kFALSE ;
+  if (aodTrack) isAODTrack = strcmp(obj->ClassName(),"AliAODTrack") == 0 ? kTRUE : kFALSE ;
 
   fTrackCuts->SetMinNClustersTPC(fMinNClusterTPC);
   fTrackCuts->SetMinNClustersITS(fMinNClusterITS);
@@ -502,7 +508,7 @@ void AliCFTrackQualityCuts::SelectionBitMap(TObject* obj)
   if (nTrackletsTRD >= fMinNTrackletTRD)
     fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if (esdTrack->GetTRDntrackletsPID() >= fMinNTrackletTRDpid)
+  if (!isESDTrack || esdTrack->GetTRDntrackletsPID() >= fMinNTrackletTRDpid)
     fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
 
@@ -520,7 +526,7 @@ void AliCFTrackQualityCuts::SelectionBitMap(TObject* obj)
   if (chi2PerTrackletTRD <= fMaxChi2PerTrackletTRD)
     fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
-  if (esdTrack->GetTPCsignalN() >= fMinNdEdxClusterTPC)
+  if (!isESDTrack || esdTrack->GetTPCsignalN() >= fMinNdEdxClusterTPC)
     fBitmap->SetBitNumber(iCutBit,kTRUE);
   iCutBit++;
 
@@ -850,10 +856,10 @@ void AliCFTrackQualityCuts::SetHistogramBins(Int_t index, Int_t nbins, Double_t
 
 
   // book QA histograms
-  Char_t str[256];
+  Char_t str[5];
   for (Int_t i=0; i<kNStepQA; i++) {
-    if (i==0) sprintf(str," ");
-    else sprintf(str,"_cut");
+    if (i==0) snprintf(str,5," ");
+    else snprintf(str,5,"_cut");
 
     fhQA[kCutClusterTPC][i]    = new TH1F(Form("%s_nClustersTPC%s",GetName(),str)     ,"",fhNBinsClusterTPC-1,fhBinLimClusterTPC);
     fhQA[kCutClusterITS][i]    = new TH1F(Form("%s_nClustersITS%s",GetName(),str)     ,"",fhNBinsClusterITS-1,fhBinLimClusterITS);
@@ -903,13 +909,20 @@ void AliCFTrackQualityCuts::FillHistograms(TObject* obj, Bool_t b)
     return;
   }
 
-  Bool_t isESDTrack = strcmp(obj->ClassName(),"AliESDtrack") == 0 ? kTRUE : kFALSE ;
-  Bool_t isAODTrack = strcmp(obj->ClassName(),"AliAODTrack") == 0 ? kTRUE : kFALSE ;
+  AliESDtrack * esdTrack = dynamic_cast<AliESDtrack*>(obj);
+  AliAODTrack * aodTrack = dynamic_cast<AliAODTrack*>(obj);
+
+  if (!(esdTrack || aodTrack)) {
+    AliError("object must be an ESDtrack or an AODtrack !");
+    return;
+  }
+
+  Bool_t isESDTrack = kFALSE;
+  Bool_t isAODTrack = kFALSE;
+
+  if (esdTrack) isESDTrack = strcmp(obj->ClassName(),"AliESDtrack") == 0 ? kTRUE : kFALSE ;
+  if (aodTrack) isAODTrack = strcmp(obj->ClassName(),"AliAODTrack") == 0 ? kTRUE : kFALSE ;
 
-  AliESDtrack * esdTrack = 0x0 ;
-  AliAODTrack * aodTrack = 0x0 ; 
-  if (isESDTrack) esdTrack = dynamic_cast<AliESDtrack*>(obj);
-  if (isAODTrack) aodTrack = dynamic_cast<AliAODTrack*>(obj);
 
   // b = 0: fill histograms before cuts
   // b = 1: fill histograms after cuts
@@ -960,9 +973,10 @@ void AliCFTrackQualityCuts::FillHistograms(TObject* obj, Bool_t b)
 //   if (b==0 || (b==1 && fTrackCuts->GetCutVariable(2)>0)) fhQA[kCutMinFoundClusterTPC][b]->Fill((float)fractionFoundClustersTPC);
   if (b==0 || (b==1 && nClustersTPC>0)) fhQA[kCutMinFoundClusterTPC][b]->Fill((float)fractionFoundClustersTPC);
   fhQA[kCutTrackletTRD][b]->Fill((float)nTrackletsTRD);
-  fhQA[kCutTrackletTRDpid][b]->Fill((float)esdTrack->GetTRDntrackletsPID());
-  fhQA[kCutdEdxClusterTPC][b]->Fill((float)esdTrack->GetTPCsignalN());
-
+  if (isESDTrack) {
+   fhQA[kCutTrackletTRDpid][b]->Fill((float)esdTrack->GetTRDntrackletsPID());
+   fhQA[kCutdEdxClusterTPC][b]->Fill((float)esdTrack->GetTPCsignalN());
+  }
 // // // include following lines when AliESDtrackCuts is updated
 //   fhQA[kCutCovElement11][b]->Fill(fTrackCuts->GetCutVariable(6));
 //   fhQA[kCutCovElement22][b]->Fill(fTrackCuts->GetCutVariable(7));
@@ -981,7 +995,6 @@ void AliCFTrackQualityCuts::FillHistograms(TObject* obj, Bool_t b)
   if (b) return;
 
   // Get the bitmap of the single cuts
-  if ( !obj ) return;
   SelectionBitMap(obj);
 
   // Number of single cuts in this class