]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TRD/AliHLTTRDCalibrationComponent.cxx
- changed Addtask to run added signals for new MC's
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDCalibrationComponent.cxx
index 6c79e1ae36a13d4d0b53bdace9ab210c61a2d099..f44f5e2a95d0cdf8d477bd49d75f49334684ba4b 100644 (file)
@@ -3,9 +3,8 @@
 /**************************************************************************
  * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
  *                                                                        *
- * Authors: Matthias Richter <Matthias.Richter@ift.uib.no>                *
- *          Timm Steinbeck <timm@kip.uni-heidelberg.de>                   *
- *          for The ALICE Off-line Project.                               *
+ * Authors:                                                               *
+ *          for The ALICE HLT Project.                                    *
  *                                                                        *
  * Permission to use, copy, modify and distribute this software and its   *
  * documentation strictly for non-commercial purposes is hereby granted   *
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/** @file   AliHLTTRDCalibrationComponent.cxx
-    @author Timm Steinbeck, Matthias Richter
-    @date
-    @brief  A TRDCalibration processing component for the HLT. */
-
-#if __GNUC__ >= 3
-using namespace std;
-#endif
+//  @file   AliHLTTRDCalibrationComponent.cxx
+//  @author 
+//  @date
+//  @brief  A TRDCalibration processing component for the HLT. 
+// 
 
 #include "TTree.h"
 #include "TFile.h"
@@ -59,6 +55,8 @@ using namespace std;
 #include <cerrno>
 #include <string>
 
+using namespace std;
+
 ClassImp(AliHLTTRDCalibrationComponent);
 
 AliHLTTRDCalibrationComponent::AliHLTTRDCalibrationComponent()
@@ -71,7 +69,10 @@ AliHLTTRDCalibrationComponent::AliHLTTRDCalibrationComponent()
     fDisplayArray(NULL),
     fSavedTimeBins(kFALSE),
     fTrgStrings(NULL),
-    fAccRejTrg(0)
+    fAccRejTrg(0),
+    fMinClusters(0),
+    fMinTracklets(0),
+    fTakeAllEvents(kFALSE)
 {
   // Default constructor
 }
@@ -153,15 +154,27 @@ Int_t AliHLTTRDCalibrationComponent::ScanArgument( int argc, const char** argv )
           i += 2;
           continue;
         }
-      if ( !strcmp( argv[i], "-everyNevent" ) )
+      if ( !strcmp( argv[i], "-minClusters" ) )
+        {
+          if ( i+1>=argc )
+            {
+              HLTError("Missing minClusters parameter");
+              return ENOTSUP;
+            }
+          HLTDebug("argv[%d+1] == %s", i, argv[i+1] );
+         fMinClusters = strtoul( argv[i+1], &cpErr, 0 );
+          i += 2;
+          continue;
+        }
+      if ( !strcmp( argv[i], "-minTracklets" ) )
         {
           if ( i+1>=argc )
             {
-              HLTError("Missing everyNevent parameter");
+              HLTError("Missing minTracklets parameter");
               return ENOTSUP;
             }
           HLTDebug("argv[%d+1] == %s", i, argv[i+1] );
-          HLTInfo("Option -everyNevent depreceated");
+         fMinTracklets = strtoul( argv[i+1], &cpErr, 0 );
           i += 2;
           continue;
         }
@@ -190,6 +203,13 @@ Int_t AliHLTTRDCalibrationComponent::ScanArgument( int argc, const char** argv )
           i += 1;
           continue;
         }
+      if ( !strcmp( argv[i], "-takeAllEvents" ) )
+        {
+         fTakeAllEvents = kTRUE;
+         fAccRejTrg = 0;
+          i += 1;
+          continue;
+        }
 
       else {
         HLTError("Unknown option '%s'", argv[i] );
@@ -250,6 +270,7 @@ Int_t AliHLTTRDCalibrationComponent::DeinitCalibration()
   
   HLTDebug("DeinitCalibration");
   delete fTracksArray; fTracksArray=0;
+  fTRDCalibraFillHisto->DestroyDebugStreamer();
   //fTRDCalibraFillHisto->Destroy();
   //fOutArray->Delete();
   delete fOutArray; fOutArray=0;
@@ -262,14 +283,13 @@ Int_t AliHLTTRDCalibrationComponent::DeinitCalibration()
   return 0;
 }
 
-Int_t AliHLTTRDCalibrationComponent::ProcessCalibration(const AliHLTComponent_EventData& evtData,
+Int_t AliHLTTRDCalibrationComponent::ProcessCalibration(const AliHLTComponent_EventData& /*evtData*/,
                                                         const AliHLTComponent_BlockData* /*blocks*/,
-                                                        AliHLTComponent_TriggerData& trigData,
+                                                        AliHLTComponent_TriggerData& /*trigData*/,
                                                         AliHLTUInt8_t* /*outputPtr*/,
                                                         AliHLTUInt32_t& /*size*/,
                                                         vector<AliHLTComponent_BlockData>& /*outputBlocks*/)
 {
-  HLTDebug("NofBlocks %lu", evtData.fBlockCnt );
   // Process an event
        
   TClonesArray* TCAarray[18] = {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
@@ -312,12 +332,12 @@ Int_t AliHLTTRDCalibrationComponent::ProcessCalibration(const AliHLTComponent_Ev
     }
     HLTDebug("Saving number of time bins which was read from input block. Value is: %d", nTimeBins);
     fTRDCalibraFillHisto->Init2Dhistos(nTimeBins); // initialise the histos
-    fTRDCalibraFillHisto->SetNumberClusters(0); // At least 1 clusters
+    fTRDCalibraFillHisto->SetNumberClusters(fMinClusters); // At least fMinClusters clusters
     fTRDCalibraFillHisto->SetNumberClustersf(nTimeBins); // Not more than %d  clusters
     fSavedTimeBins=kTRUE;
   }
 
-  Bool_t TriggerPassed=kFALSE;
+  Bool_t TriggerPassed = fTakeAllEvents;
 
   if(fAccRejTrg){
     if(fAccRejTrg>0){
@@ -325,8 +345,7 @@ Int_t AliHLTTRDCalibrationComponent::ProcessCalibration(const AliHLTComponent_Ev
       for(int i = 0; i < fTrgStrings->GetEntriesFast(); i++){
        const TObjString *const obString=(TObjString*)fTrgStrings->At(i);
        const TString tString=obString->GetString();
-       //printf("Trigger Output: %i\n",EvaluateCTPTriggerClass(tString.Data(),trigData));
-       if(EvaluateCTPTriggerClass(tString.Data(),trigData)){TriggerPassed=kTRUE; break;}
+       if(CheckCTPTrigger(tString.Data())>0){TriggerPassed=kTRUE; break;}
       }
     }
     else{
@@ -334,23 +353,25 @@ Int_t AliHLTTRDCalibrationComponent::ProcessCalibration(const AliHLTComponent_Ev
       for(int i = 0; i < fTrgStrings->GetEntriesFast(); i++){
        const TObjString *const obString=(TObjString*)fTrgStrings->At(i);
        const TString tString=obString->GetString();
-       if(EvaluateCTPTriggerClass(tString.Data(),trigData)){TriggerPassed=kFALSE; break;}
+       if(CheckCTPTrigger(tString.Data())>0){TriggerPassed=kFALSE; break;}
       }
     }
   }
   
   fTRDCalibraFillHisto->SetCH2dOn(TriggerPassed);
+  fTRDCalibraFillHisto->SetPH2dOn(TriggerPassed);
   for(int i=0; i<usedEntries; i++){
     const TClonesArray* inArr = TCAarray[i];
     Int_t nbEntries = inArr->GetEntries();
     HLTDebug(" %i TRDtracks in tracksArray", nbEntries);
     AliTRDtrackV1* trdTrack = 0x0;
-    for (Int_t i = 0; i < nbEntries; i++){
-      HLTDebug("%i/%i: ", i+1, nbEntries);
-      trdTrack = (AliTRDtrackV1*)inArr->At(i);
-      // for(int i=0; i<7; i++)
-      //   if(trdTrack->GetTracklet(i))trdTrack->GetTracklet(i)->Bootstrap(fReconstructor);
+    for (Int_t ii = 0; ii < nbEntries; ii++){
+      HLTDebug("%i/%i: ", ii+1, nbEntries);
+      trdTrack = (AliTRDtrackV1*)inArr->At(ii);
+      if(trdTrack->GetNumberOfTracklets()<fMinTracklets)continue;
       fTRDCalibraFillHisto->UpdateHistogramsV1(trdTrack);
+      // for(int i3=0; i3<7; i3++)
+      //   if(trdTrack->GetTracklet(i3))trdTrack->GetTracklet(i3)->Bootstrap(fReconstructor);
     }
   }
 
@@ -411,8 +432,6 @@ void AliHLTTRDCalibrationComponent::FormOutput(Int_t param)
 
 Int_t AliHLTTRDCalibrationComponent::ShipDataToFXS(const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/)
 {
-  //fTRDCalibraFillHisto->DestroyDebugStreamer();
-
   AliHLTReadoutList rdList(AliHLTReadoutList::kTRD);
 
   EORCalibration();
@@ -422,41 +441,29 @@ Int_t AliHLTTRDCalibrationComponent::ShipDataToFXS(const AliHLTComponentEventDat
   //fOutArray->Remove(fOutArray->FindObject("PH2d"));
   //fOutArray->Remove(fOutArray->FindObject("CH2d"));
 
-  //if(!(fOutArray->FindObject("CH2d"))) {
-  //  TH2I * ch2d = new TH2I("CH2d","Nz0Nrphi0",100,0.0,300.0,540,0,540);
-  //  fOutArray->Add(ch2d);
-  //}
-
-  //if(!(fOutArray->FindObject("PH2d"))) {
-  //  TProfile2D * ph2d = new TProfile2D("PH2d","Nz0Nrphi0",30,-0.05,2.95,540,0,540);
-  //  fOutArray->Add(ph2d);
-  //}
+  if(!(fOutArray->FindObject("CH2d"))) {
+    TH2I * ch2d = new TH2I("CH2d","Nz0Nrphi0",100,0.0,300.0,540,0,540);
+    fOutArray->Add(ch2d);
+  }
 
-  //if(!(fOutArray->FindObject("PRF2d"))) {
-  //  TProfile2D * prf2d = new TProfile2D("PRF2d","Nz0Nrphi0Ngp3",60,-9.0,9.0,540,0,540);
-  //  fOutArray->Add(prf2d);
-  //}
+  if(!(fOutArray->FindObject("PH2d"))) {
+    TProfile2D * ph2d = new TProfile2D("PH2d","Nz0Nrphi0",30,-0.05,2.95,540,0,540);
+    fOutArray->Add(ph2d);
+  }
 
+  if(!(fOutArray->FindObject("PRF2d"))) {
+    TProfile2D * prf2d = new TProfile2D("PRF2d","Nz0Nrphi0Ngp3",60,-9.0,9.0,540,0,540);
+    fOutArray->Add(prf2d);
+  }
 
   HLTDebug("Size of the fOutArray is %d\n",fOutArray->GetEntriesFast());
 
-  /*
-  TString fileName="$ALIHLT_TOPDIR/build-debug/output/CalibHistoDump_run";
-  fileName+=".root";
-  HLTInfo("Dumping Histogram file to %s",fileName.Data());
-  TFile* file = TFile::Open(fileName, "RECREATE");
-  //fAfterRunArray->Write();
-  fOutArray->Write();
-  file->Close();
-  HLTInfo("Histogram file dumped");
-  */
-  
-  PushToFXS((TObject*)fOutArray, "TRD", "GAINDRIFTPRF", rdList.Buffer() );
+  PushToFXS((TObject*)fOutArray, "TRD", "GAINDRIFTPRF", &rdList );
   //PushToFXS((TObject*)fOutArray->FindObject("CH2d"), "TRD", "GAINDRIFTPRF", rdList.Buffer() );
 
-       
   return 0;
 }
+
 Int_t AliHLTTRDCalibrationComponent::EORCalibration()
 {
   //Also Fill histograms for the online display
@@ -474,10 +481,10 @@ Int_t AliHLTTRDCalibrationComponent::EORCalibration()
   //Gain
   calibra->SetMinEntries(100);
   calibra->AnalyseCH(hCH2d);
-  Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(0))
-    + 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(0));
-  Int_t nbfit       = calibra->GetNumberFit();
-  Int_t nbE         = calibra->GetNumberEnt();
+  //Int_t nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(0))
+  //  + 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(0));
+  //Int_t nbfit       = calibra->GetNumberFit();
+  //Int_t nbE         = calibra->GetNumberEnt();
   TH1F *coefgain = 0x0;
   // enough statistics
   //if ((nbtg >                  0) && 
@@ -494,9 +501,9 @@ Int_t AliHLTTRDCalibrationComponent::EORCalibration()
   calibra->SetMinEntries(100); // If there is less than 100
   hVdriftLinearFit->FillPEArray();
   calibra->AnalyseLinearFitters(hVdriftLinearFit);
-  nbtg = 540;
-  nbfit = calibra->GetNumberFit();
-  nbE   = calibra->GetNumberEnt();
+  //nbtg = 540;
+  //nbfit = calibra->GetNumberFit();
+  //nbE   = calibra->GetNumberEnt();
   TH1F *coefdriftsecond = 0x0;
   // enough statistics
   //if ((nbtg >                  0) && 
@@ -513,10 +520,10 @@ Int_t AliHLTTRDCalibrationComponent::EORCalibration()
   // vdrift first method
   calibra->SetMinEntries(100*20); // If there is less than 20000
   calibra->AnalysePH(hPH2d);
-  nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(1))
-    + 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(1));
-  nbfit        = calibra->GetNumberFit();
-  nbE          = calibra->GetNumberEnt();
+  //nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(1))
+  //  + 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(1));
+  //nbfit        = calibra->GetNumberFit();
+  //nbE          = calibra->GetNumberEnt();
   TH1F *coefdrift = 0x0;
   TH1F *coeft0 = 0x0;
   // enough statistics
@@ -538,10 +545,10 @@ Int_t AliHLTTRDCalibrationComponent::EORCalibration()
   //PRF
   calibra->SetMinEntries(200); 
   calibra->AnalysePRFMarianFit(hPRF2d);
-  nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(2))
-    + 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(2));
-  nbfit        = calibra->GetNumberFit();
-  nbE          = calibra->GetNumberEnt();
+  //nbtg = 6*4*18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb0(2))
+  //  + 6*  18*((Int_t) ((AliTRDCalibraMode *)calibra->GetCalibraMode())->GetDetChamb2(2));
+  //nbfit        = calibra->GetNumberFit();
+  //nbE          = calibra->GetNumberEnt();
   TH1F *coefprf = 0x0;
   // enough statistics
   //if ((nbtg >                  0) && 
@@ -559,27 +566,23 @@ Int_t AliHLTTRDCalibrationComponent::EORCalibration()
   coefdrift->SetName("coefdrift");
   coefdriftsecond->SetName("coefdriftsecond");
   coeft0->SetName("coeft0");
-  if(coefgain) fAfterRunArray->Add(coefgain);
-  if(coefprf) fAfterRunArray->Add(coefprf);
-  if(coefdrift) fAfterRunArray->Add(coefdrift);
-  if(coefdriftsecond) fAfterRunArray->Add(coefdriftsecond);
-  if(coeft0) fAfterRunArray->Add(coeft0);
-  
-
-  if(coefgain||coefprf||coefdrift||coeft0||coefdriftsecond) {
-    PushBack(fAfterRunArray, AliHLTTRDDefinitions::fgkEORCalibrationDataType);
-  }
+  fAfterRunArray->Add(coefgain);
+  fAfterRunArray->Add(coefprf);
+  fAfterRunArray->Add(coefdrift);
+  fAfterRunArray->Add(coefdriftsecond);
+  fAfterRunArray->Add(coeft0);
 
-  /*
-  TString fileName="$ALIHLT_TOPDIR/build-debug/output/CalibHistoDump_run";
-  fileName+=".root";
-  HLTInfo("Dumping Histogram file to %s",fileName.Data());
-  TFile* file = TFile::Open(fileName, "RECREATE");
-  fAfterRunArray->Write();
-  fOutArray->Write();
-  file->Close();
-  HLTInfo("Histogram file dumped");
-  */
+  PushBack(fAfterRunArray, AliHLTTRDDefinitions::fgkEORCalibrationDataType);
+  
+  // TString fileName="/tmp/CalibHistoDump_run";
+  // fileName+=AliCDBManager::Instance()->GetRun();
+  // fileName+=".root";
+  // HLTInfo("Dumping Histogram file to %s",fileName.Data());
+  // TFile* file = TFile::Open(fileName, "RECREATE");
+  // fAfterRunArray->Write();
+  // fOutArray->Write();
+  // file->Close();
+  // HLTInfo("Histogram file dumped");
 
   return 0;
 }