- add new calibration in the reconstruction macro (Theo)
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 11 May 2010 15:30:39 +0000 (15:30 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 11 May 2010 15:30:39 +0000 (15:30 +0000)
- some bugfixes in the new calibration component

HLT/TRD/AliHLTTRDCalibFitComponent.cxx
HLT/TRD/AliHLTTRDCalibFitComponent.h
HLT/TRD/macros/rec-hlt-trd.cxx

index 942e8b166710de53a88019786e3791ef0a18a0f2..ef41fec7eb40f55dcfd68927315a4db386d82ea2 100644 (file)
@@ -63,8 +63,9 @@ AliHLTTRDCalibFitComponent::AliHLTTRDCalibFitComponent()
   : AliHLTCalibrationProcessor(),
     fOutputSize(500000),
     fOutArray(NULL),
-    fTempArray(NULL),
-    fAfterRunArray(NULL)
+    fAfterRunArray(NULL),
+    fNoOfSM(0),
+    fNoOfIncSM(0)
 {
   // Default constructor
 }
@@ -135,9 +136,6 @@ Int_t AliHLTTRDCalibFitComponent::DeinitCalibration()
   
   HLTDebug("DeinitCalibration");
   //fOutArray->Delete();
-  if(fTempArray){
-    delete fTempArray; fTempArray=0;
-  }
   delete fOutArray; fOutArray=0;
   fAfterRunArray->Delete();
   delete fAfterRunArray; fAfterRunArray=0;
@@ -170,37 +168,41 @@ Int_t AliHLTTRDCalibFitComponent::ProcessCalibration(const AliHLTComponent_Event
 
     if(SM!=lastSM){
       if(fIncSM[SM]){
-       PushBack(fTempArray, AliHLTTRDDefinitions::fgkCalibrationDataType);
+       if(fNoOfIncSM<fNoOfSM)
+         return 0;
+       fNoOfSM=fNoOfIncSM;
+       PushBack(fOutArray, AliHLTTRDDefinitions::fgkCalibrationDataType);
        fOutArray->Delete();
        delete fOutArray;
-       fOutArray = fTempArray;
-       fTempArray = NULL;
+       fOutArray = NULL;
        for(int i=0; i<18; i++)
          fIncSM[i]=kFALSE;
+       fNoOfIncSM=0;
       }
       lastSM = SM;
       fIncSM[SM]=kTRUE;
+      fNoOfIncSM++;
     }
 
-    if(!fTempArray) fTempArray = (TObjArray*)iter->Clone();
+    if(!fOutArray) fOutArray = (TObjArray*)iter->Clone();
     else{
       TObjArray* inArr = (TObjArray*)iter;
       for(int i = inArr->GetEntriesFast(); i--;){
        const TH1* histo = dynamic_cast<const TH1*>(inArr->At(i));
        if(histo){
-         if(fTempArray->At(i)){
-           ((TH1*)fTempArray->At(i))->Add(histo);
+         if(fOutArray->At(i)){
+           ((TH1*)fOutArray->At(i))->Add(histo);
          }else{
-           fTempArray->AddAt(histo->Clone(), i);
+           fOutArray->AddAt(histo->Clone(), i);
          }
          continue;
        }
        AliTRDCalibraVdriftLinearFit* obj = dynamic_cast<AliTRDCalibraVdriftLinearFit*>(inArr->At(i));
        if(obj){
-         if(fTempArray->At(i)){
-           ((AliTRDCalibraVdriftLinearFit*)fTempArray->At(i))->Add(obj);
+         if(fOutArray->At(i)){
+           ((AliTRDCalibraVdriftLinearFit*)fOutArray->At(i))->Add(obj);
          }else{
-           fTempArray->AddAt(new AliTRDCalibraVdriftLinearFit(*obj), i);
+           fOutArray->AddAt(new AliTRDCalibraVdriftLinearFit(*obj), i);
          }
        }
       }
index 37928a0a2a89ac229302c65f76d7cded6555444d..808212c74f3a7d56dbfa486bc114f0fe0843820a 100644 (file)
@@ -79,9 +79,10 @@ private:
 
   AliHLTUInt32_t fOutputSize;    // output size
   TObjArray* fOutArray;          // array containing the output
-  TObjArray* fTempArray;          // array containing the output
   TObjArray* fAfterRunArray;     // array with after run processing output 
-  Bool_t fIncSM[18];            // array for telling which super module was already added
+  Bool_t fIncSM[18];             // array for telling which super module was already added
+  Int_t fNoOfSM;                 // number of known SM
+  Int_t fNoOfIncSM;              // number of SM already added
   
   ClassDef(AliHLTTRDCalibFitComponent, 2)
 
index cab6b0a906086a1dba2b1d765bfdd55e4fc2b34f..7668161bd5fc7b3ab475bc4dac8fb62b7f0af61f 100644 (file)
@@ -69,7 +69,7 @@ int rec_hlt_trd(const TString filename, TString outPath)
   // If not use these SMs:
   Int_t TRDmodules[18] = {0,1,7,8,9,10,17,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1};
 
-  // Use custom arguments for components?
+  // Use custom arguments for components? i.e.: not reading OCDB arguments
   Bool_t customArgs=kFALSE;
 
   // Disable HLT flag?
@@ -144,11 +144,11 @@ int rec_hlt_trd(const TString filename, TString outPath)
 
   TString option="libAliHLTUtil.so libAliHLTTRD.so libAliHLTMUON.so libAliHLTGlobal.so libAliHLTTrigger.so loglevel=0x7f chains=";
   option+=chains;
-  TString afterTr, afterTrOff, afterCf;
+  TString afterTr, afterTrOff, afterCf, afterCal;
 
   for (int module = 0; module < usedModules; module++) 
     {
-      TString arg, publisher, cf, tr, trOff;
+      TString arg, publisher, cf, tr, trOff, cal;
       // raw data publisher components
       publisher.Form("TRD-RP_%02d", TRDmodules[module]);
       arg.Form("-minid %d -datatype 'DDL_RAW ' 'TRD ' -dataspec %i -verbose", TRDmodules[module]+1024, (int)TMath::Power(2,TRDmodules[module]));
@@ -198,6 +198,15 @@ int rec_hlt_trd(const TString filename, TString outPath)
 
       if (afterTrOff.Length()>0) afterTrOff+=" ";
       afterTrOff+=trOff;
+
+      // new SM wise calibration
+      arg="-takeAllEvents";
+
+      cal.Form("TRD-CalHist_%02d", TRDmodules[module]);
+      AliHLTConfiguration calConf(cal.Data(), "TRDCalibHisto", tr.Data(), arg.Data());
+      
+      if (afterCal.Length()>0) afterCal+=" ";
+      afterCal+=cal;
       
     }
 
@@ -205,8 +214,12 @@ int rec_hlt_trd(const TString filename, TString outPath)
   AliHLTConfiguration histoConf("TRD-ClHisto", "TRDClusterHisto", afterCf.Data(), "");
   AliHLTConfiguration writerHistoConf( "TRD-ClHistoFile", "ROOTFileWriter", "TRD-ClHisto", "-directory hlt-trd-histo/ -datafile histo.root -concatenate-events -concatenate-blocks");
 
-  // calibration (you may use tr or trOff here)
-  AliHLTConfiguration calibConf("TRD-Calib", "TRDCalibration", afterTr.Data(), "-TrgStr hi -rejectTrgStr");
+  // new calibration (SM wise)
+  AliHLTConfiguration calibFitConf("TRD-CalibFit", "TRDCalibFit", afterCal.Data(), "");
+  AliHLTConfiguration writerCalibFitConf( "TRD-CalibFitFile", "ROOTFileWriter", "TRD-CalibFit", "-directory hlt-trd-calib/ -datafile calibFit.root -concatenate-events -concatenate-blocks -write-all-events");
+
+  // old calibration (you may use tr or trOff here)
+  AliHLTConfiguration calibConf("TRD-Calib", "TRDCalibration", afterTr.Data(), "-takeAllEvents");
   AliHLTConfiguration writerCalibConf( "TRD-CalibFile", "ROOTFileWriter", "TRD-Calib", "-directory hlt-trd-calib/ -datafile calib.root -concatenate-events -concatenate-blocks -write-all-events");
 
   // esd converter