/**************************************************************************
* 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"
#include <cerrno>
#include <string>
+using namespace std;
+
ClassImp(AliHLTTRDCalibrationComponent);
AliHLTTRDCalibrationComponent::AliHLTTRDCalibrationComponent()
fDisplayArray(NULL),
fSavedTimeBins(kFALSE),
fTrgStrings(NULL),
- fAccRejTrg(0)
+ fAccRejTrg(0),
+ fMinClusters(0),
+ fMinTracklets(0),
+ fTakeAllEvents(kFALSE)
{
// Default constructor
}
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;
}
i += 1;
continue;
}
+ if ( !strcmp( argv[i], "-takeAllEvents" ) )
+ {
+ fTakeAllEvents = kTRUE;
+ fAccRejTrg = 0;
+ i += 1;
+ continue;
+ }
else {
HLTError("Unknown option '%s'", argv[i] );
HLTDebug("DeinitCalibration");
delete fTracksArray; fTracksArray=0;
+ fTRDCalibraFillHisto->DestroyDebugStreamer();
//fTRDCalibraFillHisto->Destroy();
//fOutArray->Delete();
delete fOutArray; fOutArray=0;
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};
}
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){
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{
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);
}
}
Int_t AliHLTTRDCalibrationComponent::ShipDataToFXS(const AliHLTComponentEventData& /*evtData*/, AliHLTComponentTriggerData& /*trigData*/)
{
- //fTRDCalibraFillHisto->DestroyDebugStreamer();
-
AliHLTReadoutList rdList(AliHLTReadoutList::kTRD);
EORCalibration();
//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
//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) &&
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) &&
// 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
//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) &&
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;
}