]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TRD/AliTRDCalibTask.cxx
re-activate contrib code
[u/mrichter/AliRoot.git] / TRD / AliTRDCalibTask.cxx
index 1a7aed5057fb1fcc0c2cf899eca6a3decd5b6663..15b67dd893f5578a408fe2e18544e30b231a41a4 100644 (file)
@@ -88,88 +88,96 @@ using namespace std;
 ClassImp(AliTRDCalibTask)
 
 //________________________________________________________________________
-  AliTRDCalibTask::AliTRDCalibTask(const char *name) 
-    : AliAnalysisTaskSE(name), fESD(0),
-      fkEsdTrack(0),
-      fFriendTrack(0),
-      fCalibObject(0),
-      fTrdTrack(0),
-      fCl(0),
-      fListHist(0),
-      fTRDCalibraFillHisto(0),
-      fTRDChamberStatus(0),
-      fNEvents(0),
-      fNEventsInput(0),
-      fNbTRDTrack(0),
-      fNbTRDTrackOffline(0),
-      fNbTRDTrackStandalone(0),
-      fNbTPCTRDtrack(0),
-      fNbGoodTracks(0),
-      fNbTimeBin(0),
-      fNbTimeBinOffline(0),
-      fNbTimeBinStandalone(0),
-      fNbClusters(0),
-      fNbClustersOffline(0),
-      fNbClustersStandalone(0),
-      fNbTracklets(0),
-      fNbTrackletsOffline(0),
-      fNbTrackletsStandalone(0),
-      fAbsoluteGain(0),
-      fCH2dSum(0),
-      fPH2dSum(0),
-      fCH2dSM(0),
-      fPH2dSM(0),
-      fCH2dTest(0),
-      fPH2dTest(0),
-      fLinearVdriftTest(0),
-      fOnInstance(kTRUE),
-      fHisto2d(kTRUE),
-      fVector2d(kFALSE),
-      fVdriftLinear(kTRUE),
-      fExbAlt(kFALSE),
-      fDebugLevelTRDCalibraFillHisto(0),
-      fNbTimeBins(0),
-      fNumberBinCharge(50),
-      fSelectTrigger(kTRUE),
-      fSelectedTrigger(new TObjArray()),
-      fRejected(kTRUE),
-      fEsdTrackCuts(0),
-      fRequirePrimaryVertex(kFALSE),
-      fVtxTPC(kFALSE),
-      fVtxSPD(kFALSE),
-      fMinNbContributors(0),
-      fRangePrimaryVertexZ(9999999.0),
-      fMinNbTracks(9),
-      fMaxNbTracks(999999999),
-      fCutWithVdriftCalib(kFALSE),
-      fMinNbTRDtracklets(0),
-      fMinTRDMomentum(0),
-      fScaleGainWithTPCSignal(kFALSE),
-      fLow(0),
-      fHigh(30),
-      fFillZero(kFALSE),
-      fNormalizeNbOfCluster(kFALSE),
-      fRelativeScale(0.0),
-      fMaxCluster(100.0),
-      fNbMaxCluster(2),
-      fOfflineTracks(kFALSE),
-      fStandaloneTracks(kFALSE),
-      fFirstRunGain(-1),
-      fVersionGainUsed(-1),
-      fSubVersionGainUsed(-1),
-      fFirstRunGainLocal(-1),
-      fVersionGainLocalUsed(-1),
-      fSubVersionGainLocalUsed(-1),
-      fFirstRunVdrift(-1),
-      fVersionVdriftUsed(-1), 
-      fSubVersionVdriftUsed(-1),
-      fFirstRunExB(-1),
-      fVersionExBUsed(-1), 
-      fSubVersionExBUsed(-1),
-      fCalDetGain(0x0),
-      fMaxEvent(0),
-      fCounter(0),
-      fPHQon(kTRUE)
+AliTRDCalibTask::AliTRDCalibTask(const char *name) 
+: AliAnalysisTaskSE(name), fESD(0),
+  fkEsdTrack(0),
+  fFriendTrack(0),
+  fCalibObject(0),
+  fTrdTrack(0),
+  fCl(0),
+  fListHist(0),
+  fTRDCalibraFillHisto(0),
+  fTRDChamberStatus(0),
+  fNEvents(0),
+  fNEventsInput(0),
+  fNbTRDTrack(0),
+  fNbTRDTrackOffline(0),
+  fNbTRDTrackStandalone(0),
+  fNbTPCTRDtrack(0),
+  fNbGoodTracks(0),
+  fNbTimeBin(0),
+  fNbTimeBinOffline(0),
+  fNbTimeBinStandalone(0),
+  fNbClusters(0),
+  fNbClustersOffline(0),
+  fNbClustersStandalone(0),
+  fNbTracklets(0),
+  fNbTrackletsOffline(0),
+  fNbTrackletsStandalone(0),
+  fAbsoluteGain(0),
+  fTOFbc(0),
+  fCH2dSum(0),
+  fPH2dSum(0),
+  fCH2dSM(0),
+  fPH2dSM(0),
+  fCH2dTest(0),
+  fPH2dTest(0),
+  fLinearVdriftTest(0),
+  fOnInstance(kTRUE),
+  fHisto2d(kTRUE),
+  fVector2d(kFALSE),
+  fVdriftLinear(kTRUE),
+  fExbAlt(kFALSE),
+  fDebugLevelTRDCalibraFillHisto(0),
+  fNbTimeBins(0),
+  fNumberBinCharge(100),
+  fRangeCharge(150),
+  fVdBindx(32), 
+  fVdBindy(70), 
+  fVdRangex(0.8),
+  fVdRangey(1.4),
+  fSelectTrigger(kTRUE),
+  fSelectedTrigger(new TObjArray()),
+  fRejected(kTRUE),
+  fEsdTrackCuts(0),
+  fRequirePrimaryVertex(kFALSE),
+  fVtxTPC(kFALSE),
+  fVtxSPD(kFALSE),
+  fMinNbContributors(0),
+  fRangePrimaryVertexZ(9999999.0),
+  fRejectPileUpWithSPD(kFALSE),
+  fRejectPileUpWithTOF(kFALSE),
+  fMinNbTracks(9),
+  fMaxNbTracks(999999999),
+  fCutWithVdriftCalib(kFALSE),
+  fMinNbTRDtracklets(0),
+  fMinTRDMomentum(0),
+  fScaleGainWithTPCSignal(kFALSE),
+  fLow(0),
+  fHigh(30),
+  fFillZero(kFALSE),
+  fNormalizeNbOfCluster(kFALSE),
+  fRelativeScale(0.0),
+  fMaxCluster(100.0),
+  fNbMaxCluster(2),
+  fOfflineTracks(kFALSE),
+  fStandaloneTracks(kFALSE),
+  fFirstRunGain(-1),
+  fVersionGainUsed(-1),
+  fSubVersionGainUsed(-1),
+  fFirstRunGainLocal(-1),
+  fVersionGainLocalUsed(-1),
+  fSubVersionGainLocalUsed(-1),
+  fFirstRunVdrift(-1),
+  fVersionVdriftUsed(-1), 
+  fSubVersionVdriftUsed(-1),
+  fFirstRunExB(-1),
+  fVersionExBUsed(-1), 
+  fSubVersionExBUsed(-1),
+  fCalDetGain(0x0),
+  fMaxEvent(0),
+  fCounter(0),
+  fPHQon(kTRUE)
 {
   //
   // Default constructor
@@ -218,6 +226,7 @@ AliTRDCalibTask::~AliTRDCalibTask()
   if(fNbTrackletsOffline) delete fNbTrackletsOffline;
   if(fNbTrackletsStandalone) delete fNbTrackletsStandalone;
   if(fAbsoluteGain) delete fAbsoluteGain;
+  if(fTOFbc) delete fTOFbc;
   if(fCH2dSum) delete fCH2dSum;
   if(fPH2dSum) delete fPH2dSum;
   if(fCH2dSM) delete fCH2dSM;
@@ -321,7 +330,16 @@ void AliTRDCalibTask::UserCreateOutputObjects()
       fListHist->Add(fTRDCalibraFillHisto->GetPH2d()); 
       fListHist->Add(fTRDCalibraFillHisto->GetPRF2d());
     } 
-    if(fVdriftLinear) fListHist->Add((TObject *)fTRDCalibraFillHisto->GetVdriftLinearFit());
+    if(fVdriftLinear) {
+      AliTRDCalibraVdriftLinearFit *fvdl = fTRDCalibraFillHisto->GetVdriftLinearFit();
+      if(fvdl){
+       fvdl->SetNbBindx(fVdBindx);
+       fvdl->SetNbBindy(fVdBindy); 
+       fvdl->SetRangedx(fVdRangex); 
+       fvdl->SetRangedy(fVdRangey);  
+      }
+      fListHist->Add((TObject *)fTRDCalibraFillHisto->GetVdriftLinearFit());
+    }
     if(fVector2d) fListHist->Add((TObject *) fTRDCalibraFillHisto->GetCalibraVector()); //calibra vector
     if(fExbAlt) fListHist->Add((TObject *)fTRDCalibraFillHisto->GetExbAltFit());
   }
@@ -349,6 +367,14 @@ void AliTRDCalibTask::UserCreateOutputObjects()
   fAbsoluteGain->SetStats(0);
   fAbsoluteGain->Sumw2();
   fListHist->Add(fAbsoluteGain);
+
+  fTOFbc = new TH2F(Form("TOFbc_%s",(const char*)fName),"TOFbc", 200, -150., 50., nBinsPt, binLimPt);
+  fTOFbc->SetYTitle("Momentum");
+  fTOFbc->SetXTitle("TOF bc");
+  fTOFbc->SetZTitle("counts");
+  fTOFbc->SetStats(0);
+  fTOFbc->Sumw2();
+  fListHist->Add(fTOFbc);
   
   if(IsPHQon()){
     printf("\n        AliTRDCalibTask PHQ is on!!     \n\n");
@@ -648,7 +674,19 @@ void AliTRDCalibTask::UserExec(Option_t *)
   }
   
   //printf("Primary vertex passed\n");
+
+  //////////////////////////////////
+  // Reject pile-up with SPD
+  //////////////////////////////////
   
+  if(fRejectPileUpWithSPD) {
+    if(fInputEvent->IsPileupFromSPD(3, 0.8, 3., 2., 5)){
+      //printf("test\n");
+      PostData(1, fListHist);
+      return;
+    }
+  }
+
   //////////////////////////////////////
   // Requirement on number of good tracks
   //////////////////////////////////////
@@ -718,8 +756,9 @@ void AliTRDCalibTask::UserExec(Option_t *)
   /////////////////////////////////////
   // Loop on AliESDtrack
   ////////////////////////////////////
-  //printf("Nb of tracks %f\n",nbTracks);      
-  for(int itrk=0; itrk < nbTracks; ++itrk){
+  //printf("Nb of tracks %f\n",nbTracks); 
+  Int_t nbTracksfriends = fESDfriend->GetNumberOfTracks();     
+  for(int itrk=0; itrk < nbTracksfriends; ++itrk){
     
     // Get ESD track
     fkEsdTrack = fESD->GetTrack(itrk);
@@ -728,8 +767,9 @@ void AliTRDCalibTask::UserExec(Option_t *)
     if(status&(AliESDtrack::kTPCout)) ++nbtrackTPC;
     
     // Fix suggested by Alex
-    //fFriendTrack = fESDfriend->GetTrack(itrk);
-    fFriendTrack = (fESDfriend->GetNumberOfTracks()>itrk)?fESDfriend->GetTrack(itrk):NULL;
+    fFriendTrack = fESDfriend->GetTrack(itrk);
+    //printf("itrk %d\n",itrk);
+    //fFriendTrack = (fESDfriend->GetNumberOfTracks()>itrk)?fESDfriend->GetTrack(itrk):NULL;
     if(!fFriendTrack)  {
       //printf("No friend track %d\n",itrk);
       continue;
@@ -780,6 +820,13 @@ void AliTRDCalibTask::UserExec(Option_t *)
       //printf("Not a good track\n");
       continue;
     }
+    
+    Int_t nbcrossing = fkEsdTrack->GetTOFBunchCrossing();
+    fTOFbc->Fill(nbcrossing,fkEsdTrack->Pt());
+    // TOF pile-up rejection is asked
+    if(fRejectPileUpWithTOF) {
+      if(TMath::Abs(nbcrossing)>0.5) continue;
+    }
 
     // First Absolute gain calibration
     Int_t trdNTracklets = (Int_t) fkEsdTrack->GetTRDntracklets();
@@ -826,7 +873,8 @@ void AliTRDCalibTask::UserExec(Option_t *)
       Int_t nbtracklets = 0;
       
       // Check some stuff
-      Bool_t standalonetracklet = kFALSE;  
+      // Coverity
+      //Bool_t standalonetracklet = kFALSE;  
       const AliTRDseedV1 *tracklet = 0x0;
       //////////////////////////////////////
       // Loop tracklets
@@ -843,8 +891,9 @@ void AliTRDCalibTask::UserExec(Option_t *)
        if(!(tracklet = fTrdTrack->GetTracklet(itr))) continue;
        if(!tracklet->IsOK()) continue;
        ++nbtracklets;
-       standalonetracklet = kFALSE; 
-       if(tracklet->IsStandAlone()) standalonetracklet = kTRUE;
+        // Coverity
+       //standalonetracklet = kFALSE; 
+       //if(tracklet->IsStandAlone()) standalonetracklet = kTRUE;
        
        nbclusters = 0;
        memset(phtb, 0, AliTRDseedV1::kNtb*sizeof(Double_t));
@@ -1464,7 +1513,8 @@ Bool_t AliTRDCalibTask::FindP1TrackPHtrackletV1Test(const AliTRDseedV1 *tracklet
   ////////////
   // results of the linear fit
   Double_t dydt                       = 0.0;                                // dydt tracklet after straight line fit
-  Double_t errorpar                   = 0.0;                                // error after straight line fit on dy/dt
+  // Coverity
+  //Double_t errorpar                   = 0.0;                                // error after straight line fit on dy/dt
   Double_t pointError                 = 0.0;                                // error after straight line fit 
   // pad row problemes: avoid tracklet that cross pad rows, tilting angle in the constant
   Int_t    crossrow                   = 0;                                  // if it crosses a pad row
@@ -1538,7 +1588,8 @@ Bool_t AliTRDCalibTask::FindP1TrackPHtrackletV1Test(const AliTRDseedV1 *tracklet
   linearFitterTracklet.Eval();
   linearFitterTracklet.GetParameters(pars);
   pointError  =  TMath::Sqrt(linearFitterTracklet.GetChisquare()/(nbli-2));
-  errorpar    =  linearFitterTracklet.GetParError(1)*pointError;
+  // Coverity
+  //errorpar    =  linearFitterTracklet.GetParError(1)*pointError;
   dydt        = pars[1]; 
   //printf("chis %f, nbli %d, pointError %f, parError %f, errorpar %f\n",linearFitterTracklet->GetChisquare(),nbli,pointError,linearFitterTracklet->GetParError(1),errorpar);
   linearFitterTracklet.ClearPoints();