#include <TLinearFitter.h>
#include <TMath.h>
#include <TTreeStream.h>
+#include <THnSparse.h>
+
//header file
#include "AliTRDCalibraVdriftLinearFit.h"
fLinearFitterPArray(540),
fLinearFitterEArray(540)
{
- //
- // default constructor
- //
+ //
+ // default constructor
+ //
}
//_____________________________________________________________________
AliTRDCalibraVdriftLinearFit::AliTRDCalibraVdriftLinearFit(const AliTRDCalibraVdriftLinearFit &ped) : /*FOLD00*/
// copy constructor
//
for (Int_t idet = 0; idet < 540; idet++){
+
const TVectorD *vectorE = (TVectorD*)ped.fLinearFitterEArray.UncheckedAt(idet);
const TVectorD *vectorP = (TVectorD*)ped.fLinearFitterPArray.UncheckedAt(idet);
- const TH2F *hped = (TH2F*)ped.fLinearFitterHistoArray.UncheckedAt(idet);
+ const THnSparseS *hped = (THnSparseS*)ped.fLinearFitterHistoArray.UncheckedAt(idet);
if ( vectorE != 0x0 ) fLinearFitterEArray.AddAt(new TVectorD(*vectorE), idet);
if ( vectorP != 0x0 ) fLinearFitterPArray.AddAt(new TVectorD(*vectorP), idet);
if ( hped != 0x0 ){
- TH2F *hNew = new TH2F(*hped);
- hNew->SetDirectory(0);
+ THnSparseS *hNew = (THnSparseS *)hped->Clone();
+ //hNew->SetDirectory(0);
fLinearFitterHistoArray.AddAt(hNew,idet);
}
-
}
}
//_____________________________________________________________________
// constructor from a TObjArray
//
for (Int_t idet = 0; idet < 540; idet++){
- const TH2F *hped = (TH2F*)obja.UncheckedAt(idet);
+ const THnSparseS *hped = (THnSparseS*)obja.UncheckedAt(idet);
if ( hped != 0x0 ){
- TH2F *hNew = new TH2F(*hped);
- hNew->SetDirectory(0);
+ THnSparseS *hNew = (THnSparseS *)hped->Clone();
+ //hNew->SetDirectory(0);
fLinearFitterHistoArray.AddAt(hNew,idet);
}
}
// Copy only the histos
for (Int_t idet = 0; idet < 540; idet++){
if(fLinearFitterHistoArray.UncheckedAt(idet)){
- TH2F *hped1 = target.GetLinearFitterHisto(idet,kTRUE);
- hped1->SetDirectory(0);
- hped1->Add((const TH1F *)fLinearFitterHistoArray.UncheckedAt(idet));
+ THnSparseS *hped1 = (THnSparseS *)target.GetLinearFitterHisto(idet,kTRUE);
+ //hped1->SetDirectory(0);
+ hped1->Add((const THnSparseS *)fLinearFitterHistoArray.UncheckedAt(idet));
}
-
}
-
+
TObject::Copy(c);
}
// collection of generated histograms
Int_t count=0;
while((obj = iter->Next()) != 0)
- {
- AliTRDCalibraVdriftLinearFit* entry = dynamic_cast<AliTRDCalibraVdriftLinearFit*>(obj);
- if (entry == 0) continue;
-
- // Copy only the histos
- for (Int_t idet = 0; idet < 540; idet++){
- if(entry->GetLinearFitterHisto(idet)){
- TH2F *hped1 = GetLinearFitterHisto(idet,kTRUE);
- hped1->SetDirectory(0);
- hped1->Add(entry->GetLinearFitterHisto(idet));
+ {
+ AliTRDCalibraVdriftLinearFit* entry = dynamic_cast<AliTRDCalibraVdriftLinearFit*>(obj);
+ if (entry == 0) continue;
+
+ // Copy only the histos
+ for (Int_t idet = 0; idet < 540; idet++){
+ if(entry->GetLinearFitterHisto(idet)){
+ THnSparseS *hped1 = (THnSparseS *)GetLinearFitterHisto(idet,kTRUE);
+ Double_t entriesa = hped1->GetEntries();
+ Double_t entriesb = ((THnSparseS *)entry->GetLinearFitterHisto(idet))->GetEntries();
+ if((entriesa + entriesb) < 5*32767) hped1->Add(entry->GetLinearFitterHisto(idet));
+ }
}
+ count++;
}
-
- count++;
- }
return count;
}
fVersion++;
for (Int_t idet = 0; idet < 540; idet++){
- const TH2F *hped = (TH2F*)ped->GetLinearFitterHisto(idet);
+ const THnSparseS *hped = (THnSparseS*)ped->GetLinearFitterHisto(idet);
//printf("idet %d\n",idet);
if ( hped != 0x0 ){
//printf("add\n");
- TH2F *hped1 = GetLinearFitterHisto(idet,kTRUE);
- //printf("test2\n");
- hped1->SetDirectory(0);
- //printf("test4\n");
- hped1->Add(hped);
- //printf("test3\n");
+ THnSparseS *hped1 = (THnSparseS *)GetLinearFitterHisto(idet,kTRUE);
+ Double_t entriesa = hped1->GetEntries();
+ Double_t entriesb = hped->GetEntries();
+ if((entriesa + entriesb) < 5*32767) hped1->Add(hped);
}
}
}
//______________________________________________________________________________________
-TH2F* AliTRDCalibraVdriftLinearFit::GetLinearFitterHisto(Int_t detector, Bool_t force)
+THnSparse* AliTRDCalibraVdriftLinearFit::GetLinearFitterHisto(Int_t detector, Bool_t force)
{
//
// return pointer to TH2F histo
// if force is true create a new histo if it doesn't exist allready
//
if ( !force || fLinearFitterHistoArray.UncheckedAt(detector) )
- return (TH2F*)fLinearFitterHistoArray.UncheckedAt(detector);
+ return (THnSparse*)fLinearFitterHistoArray.UncheckedAt(detector);
// if we are forced and TLinearFitter doesn't yes exist create it
name += detector;
name += "version";
name += fVersion;
+
+ //create the map
+ Int_t thnDim[2];
+ thnDim[0] = 36;
+ thnDim[1] = 48;
+
+ //arrays for lower bounds :
+ Double_t* binEdges[2];
+ for(Int_t ivar = 0; ivar < 2; ivar++)
+ binEdges[ivar] = new Double_t[thnDim[ivar] + 1];
+
+ //values for bin lower bounds
+ for(Int_t i=0; i<=thnDim[0]; i++) binEdges[0][i]= -0.9 + (2*0.9)/thnDim[0]*(Double_t)i;
+ for(Int_t i=0; i<=thnDim[1]; i++) binEdges[1][i]= -1.2 + (2*1.2)/thnDim[1]*(Double_t)i;
+
+ THnSparseS *lfdv = new THnSparseS((const Char_t *)name,(const Char_t *) name,2,thnDim);
+
+ for (int k=0; k<2; k++) {
+ lfdv->SetBinEdges(k,binEdges[k]);
+ }
+ lfdv->Sumw2();
- TH2F *lfdv = new TH2F((const Char_t *)name,(const Char_t *) name
- ,18,-0.9,0.9,24
- ,-1.2,1.2);
- lfdv->SetXTitle("tan(phi_{track})");
- lfdv->SetYTitle("dy/dt");
- lfdv->SetZTitle("Number of clusters");
- lfdv->SetStats(0);
- lfdv->SetDirectory(0);
+ //TH2F *lfdv = new TH2F((const Char_t *)name,(const Char_t *) name
+ // ,18,-0.9,0.9,24
+ // ,-1.2,1.2);
+ //lfdv->SetXTitle("tan(phi_{track})");
+ //lfdv->SetYTitle("dy/dt");
+ //lfdv->SetZTitle("Number of clusters");
+ //lfdv->SetStats(0);
+ //lfdv->SetDirectory(0);
fLinearFitterHistoArray.AddAt(lfdv,detector);
return lfdv;
//
// Fill the 2D histos for debugging
//
-
- ((TH2F *) GetLinearFitterHisto(detector,kTRUE))->Fill(tnp,pars1);
+ Double_t entries[2] = {tnp,pars1};
+
+ THnSparseS *h = ((THnSparseS *) GetLinearFitterHisto(detector,kTRUE));
+ Double_t nbentries = h->GetEntries();
+ if(nbentries < 5*32767) h->Fill(&entries[0]);
}
//____________Functions fit Online CH2d________________________________________
// Loop over histos
for(Int_t cb = 0; cb < 540; cb++){
- const TH2F *linearfitterhisto = (TH2F*)fLinearFitterHistoArray.UncheckedAt(cb);
+ const THnSparseS *linearfitterh = (THnSparseS*)fLinearFitterHistoArray.UncheckedAt(cb);
//printf("Processing the detector cb %d we find %d\n",cb, (Bool_t) linearfitterhisto);
- if ( linearfitterhisto != 0 ){
+ if ( linearfitterh != 0 ){
+
+ TH2D *linearfitterhisto = linearfitterh->Projection(1,0);
+
// Fill a linearfitter
TAxis *xaxis = linearfitterhisto->GetXaxis();
fLinearFitterEArray.AddAt(parE,cb);
//par->Print();
//parE->Print();
- }
+ }
+
+ delete linearfitterhisto;
+
}// if something
}