// cdb->SetDefaultStorage("local://$ALICE_ROOT");
// cdb->SetRun(0);
// // initialize magnetic field.
-// AliMagFMaps *field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
+// AliMagFCheb *field=new AliMagFCheb("Maps","Maps", 2, 1., 10., AliMagFCheb::k5kG);
// AliTracker::SetFieldMap(field, kTRUE);
//
// AliTRDclusterResolution *res = new AliTRDclusterResolution();
// res->SetMCdata();
// res->Load("TRD.TaskClErrParam.root");
-// res->SetExB();
+// res->SetExB();
+// res->SetVisual();
+// //res->SetSaveAs();
+// res->SetProcessCharge(kFALSE);
+// res->SetProcessCenterPad(kFALSE);
+// //res->SetProcessMean(kFALSE);
+// res->SetProcessSigma(kFALSE);
// if(!res->PostProcess()) return;
// new TCanvas;
// res->GetRefFigure(fig);
//_______________________________________________________
-AliTRDclusterResolution::AliTRDclusterResolution()
- : AliTRDrecoTask("ClErrParam", "Cluster Error Parametrization")
+AliTRDclusterResolution::AliTRDclusterResolution(const char *name)
+ : AliTRDrecoTask(name, "Cluster Error Parametrization")
,fCanvas(0x0)
,fInfo(0x0)
,fResults(0x0)
TObjArray* AliTRDclusterResolution::Histos()
{
if(fContainer) return fContainer;
- fContainer = new TObjArray(sizeof(AliTRDclusterResolution::EResultContainers));
+ fContainer = new TObjArray(sizeof(AliTRDclusterResolution::EResultContainer));
//fContainer->SetOwner(kTRUE);
TH2I *h2 = 0x0;
h2->SetZTitle("entries");
fContainer->AddAt(arr = new TObjArray(AliTRDgeometry::kNlayer), kCenter);
+ arr->SetName("y(PadWidth)");
for(Int_t ily=0; ily<AliTRDgeometry::kNlayer; ily++){
arr->AddAt(h2 = new TH2I(Form("h_y%d", ily), Form("Ly[%d]", ily), 51, -.51, .51, 100, -.5, .5), ily);
h2->SetXTitle("y_{w} [w]");
}
fContainer->AddAt(arr = new TObjArray(kN), kSigm);
+ arr->SetName("Resolution");
Int_t ih = 0;
for(Int_t id=1; id<=fAd->GetNbins(); id++){
for(Int_t it=1; it<=fAt->GetNbins(); it++){
}
fContainer->AddAt(arr = new TObjArray(kN), kMean);
+ arr->SetName("Systematics");
ih = 0;
for(Int_t id=1; id<=fAd->GetNbins(); id++){
for(Int_t it=1; it<=fAt->GetNbins(); it++){
TH2 *h2 = 0x0;
if(!fResults){
TGraphErrors *g = 0x0;
- fResults = new TObjArray(sizeof(AliTRDclusterResolution::EResultContainers));
+ fResults = new TObjArray(sizeof(AliTRDclusterResolution::EResultContainer));
fResults->SetOwner();
fResults->AddAt(arr = new TObjArray(3), kQRes);
arr->SetOwner();
,kND = 5
,kN = kND*kNTB
};
- enum EResultContainers { // results containers
+ enum EResultContainer { // results container type
kQRes = 0
,kCenter= 1
,kSigm = 2
,kProcSigma = 3
,kProcMean = 4
};
- AliTRDclusterResolution();
+ AliTRDclusterResolution(const char *name="ClErrParam");
virtual ~AliTRDclusterResolution();
void ConnectInputData(Option_t *);
,fGeo(0x0)
,fGraphS(0x0)
,fGraphM(0x0)
- ,fClResiduals(0x0)
- ,fTrkltResiduals(0x0)
- ,fTrkltPhiResiduals(0x0)
- ,fClResolution(0x0)
- ,fTrkltResolution(0x0)
+ ,fCl(0x0)
+ ,fTrklt(0x0)
+ ,fMCcl(0x0)
+ ,fMCtrklt(0x0)
{
fReconstructor = new AliTRDReconstructor();
fReconstructor->SetRecoParam(AliTRDrecoParam::GetLowFluxParam());
InitFunctorList();
- DefineOutput(1+kCluster, TObjArray::Class());
- DefineOutput(1+kTrackletY, TObjArray::Class());
- DefineOutput(1+kTrackletPhi, TObjArray::Class());
- DefineOutput(1+kMCcluster, TObjArray::Class());
- DefineOutput(1+kMCtrackletY, TObjArray::Class());
+ DefineOutput(1, TObjArray::Class()); // cluster2track
+ DefineOutput(2, TObjArray::Class()); // tracklet2track
+ DefineOutput(3, TObjArray::Class()); // cluster2mc
+ DefineOutput(4, TObjArray::Class()); // tracklet2mc
}
//________________________________________________________
delete fGeo;
delete fReconstructor;
if(gGeoManager) delete gGeoManager;
- if(fClResiduals){fClResiduals->Delete(); delete fClResiduals;}
- if(fTrkltResiduals){fTrkltResiduals->Delete(); delete fTrkltResiduals;}
- if(fTrkltPhiResiduals){fTrkltPhiResiduals->Delete(); delete fTrkltPhiResiduals;}
- if(fClResolution){
- fClResolution->Delete();
- delete fClResolution;
- }
- if(fTrkltResolution){fTrkltResolution->Delete(); delete fTrkltResolution;}
+ if(fCl){fCl->Delete(); delete fCl;}
+ if(fTrklt){fTrklt->Delete(); delete fTrklt;}
+ if(fMCcl){fMCcl->Delete(); delete fMCcl;}
+ if(fMCtrklt){fMCtrklt->Delete(); delete fMCtrklt;}
}
fContainer = Histos();
- fClResiduals = new TObjArray();
- fClResiduals->SetOwner(kTRUE);
- fTrkltResiduals = new TObjArray();
- fTrkltResiduals->SetOwner(kTRUE);
- fTrkltPhiResiduals = new TObjArray();
- fTrkltPhiResiduals->SetOwner(kTRUE);
- fClResolution = new TObjArray();
- fClResolution->SetOwner(kTRUE);
- fTrkltResolution = new TObjArray();
- fTrkltResolution->SetOwner(kTRUE);
+ fCl = new TObjArray();
+ fCl->SetOwner(kTRUE);
+ fTrklt = new TObjArray();
+ fTrklt->SetOwner(kTRUE);
+ fMCcl = new TObjArray();
+ fMCcl->SetOwner(kTRUE);
+ fMCtrklt = new TObjArray();
+ fMCtrklt->SetOwner(kTRUE);
}
//________________________________________________________
void AliTRDtrackingResolution::Exec(Option_t *opt)
{
- fClResiduals->Delete();
- fTrkltResiduals->Delete();
- fTrkltPhiResiduals->Delete();
- fClResolution->Delete();
- fTrkltResolution->Delete();
+ fCl->Delete();
+ fTrklt->Delete();
+ fMCcl->Delete();
+ fMCtrklt->Delete();
AliTRDrecoTask::Exec(opt);
- PostData(1+kCluster, fClResiduals);
- PostData(1+kTrackletY, fTrkltResiduals);
- PostData(1+kTrackletPhi, fTrkltPhiResiduals);
- PostData(1+kMCcluster, fClResolution);
- PostData(1+kMCtrackletY, fTrkltResolution);
+ PostData(1, fCl);
+ PostData(2, fTrklt);
+ PostData(3, fMCcl);
+ PostData(4, fMCtrklt);
}
//________________________________________________________
if (d > 0.25) d = 0.5 - d;
/* AliTRDclusterInfo *clInfo = new AliTRDclusterInfo;
- fClResiduals->Add(clInfo);
+ fCl->Add(clInfo);
clInfo->SetCluster(c);
clInfo->SetGlobalPosition(yt, zt, dydx, dzdx);
clInfo->SetResolution(dy);
d -= ((Int_t)(2 * d)) / 2.0;
if (d > 0.25) d = 0.5 - d;
AliTRDclusterInfo *clInfo = new AliTRDclusterInfo;
- fClResolution->Add(clInfo);
+ fMCcl->Add(clInfo);
clInfo->SetCluster(c);
clInfo->SetMC(pdg, label);
clInfo->SetGlobalPosition(yt, zt, dydx, dzdx);
{
public:
enum{
- kCluster = 0
+ kCluster = 0 // cluster - track
,kTrackletY = 1 // tracklet - track y pools
,kTrackletPhi = 2 // tracklet - track angular pools residuals
- ,kMCcluster = 3/*5*/
- ,kMCtrackletY = 4/*6*/
- ,kMCtrackletZ = 5/*6*/
- ,kMCtrackletPhi = 6/*7*/
+ ,kMCcluster = 3 // cluster - mc residuals/systematics
+ ,kMCtrackletY = 4 // tracklet - mc y resolution/systematics
+ ,kMCtrackletZ = 5 // tracklet - mc z resolution/systematics (pad row cross)
+ ,kMCtrackletPhi = 6 // tracklet - mc phi resolution/systematics
,kMCtrackY = 7 // Kalman Y resolution
,kMCtrackZ = 8 // Kalman Z resolution
,kMCtrackPt = 9 // Kalman Pt resolution
TObjArray *fGraphM; //! result holder - mean values
// calibration containers
- TObjArray *fClResiduals; //!
- TObjArray *fTrkltResiduals; //!
- TObjArray *fTrkltPhiResiduals; //!
- TObjArray *fClResolution; //!
- TObjArray *fTrkltResolution;//!
+ TObjArray *fCl; //! cluster2track calib
+ TObjArray *fTrklt; //! tracklet2track calib
+ TObjArray *fMCcl; //! cluster2mc calib
+ TObjArray *fMCtrklt;//! tracklet2mc calib
- ClassDef(AliTRDtrackingResolution, 1) // tracking resolution task
+ ClassDef(AliTRDtrackingResolution, 1) // TRD tracking resolution task
};
#endif
#include "TGridCollection.h"
#include "TGridResult.h"
-#include "AliMagFMaps.h"
+#include "AliMagFCheb.h"
#include "AliTracker.h"
#include "AliLog.h"
#include "AliCDBManager.h"
cdbManager->SetDefaultStorage("local://$ALICE_ROOT");
cdbManager->SetRun(0);
cdbManager->SetCacheFlag(kFALSE);
- // initialize magnetic field. We should use the GRP !
- AliMagFMaps *field = new AliMagFMaps("Maps","Maps", 2, 1., 10., AliMagFMaps::k5kG);
+
+ // initialize magnetic field. TODO We should use the GRP !
+ AliMagFCheb *field = 0x0;
+ field = new AliMagFCheb("Maps","Maps", 2, 1., 10., AliMagFCheb::k5kG, kTRUE,"$(ALICE_ROOT)/data/maps/mfchebKGI_sym.root");
+ //field = new AliMagFCheb("Maps","Maps", 2, 0., 10., AliMagFCheb::k2kG);
AliTracker::SetFieldMap(field, kTRUE);
+
// initialize TRD settings
AliTRDcalibDB *cal = AliTRDcalibDB::Instance();
AliTRDtrackerV1::SetNTimeBins(cal->GetNumberOfTimeBins());
mgr->ConnectOutput(task, 0, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", task->GetName())));
// Create output containers for calibration tasks
- const Int_t nc = 5;
- const Char_t *cn[nc] = {"Cl", "TrkltY", "TrkltPhi", "ClMC", "TrkltYMC"};
+ const Int_t nc = 4;
+ const Char_t *cn[nc] = {"Cl", "Trklt", "MC_Cl", "MC_Trklt"};
AliAnalysisDataContainer *co[nc];
for(Int_t ic = 0; ic<nc; ic++){
co[ic] = mgr->CreateContainer(Form("%s%s", task->GetName(), cn[ic]), TObjArray::Class(), AliAnalysisManager::kExchangeContainer);
mgr->ConnectInput(task, 0, co[0]);
mgr->ConnectOutput(task, 0, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", task->GetName())));
- mgr->AddTask(task = new AliTRDclusterResolution());
+ mgr->AddTask(task = new AliTRDclusterResolution("ClErrParamMC"));
taskPtr[(Int_t)kClErrParam+1] = task;
((AliTRDclusterResolution*)task)->SetExB();
- mgr->ConnectInput(task, 0, co[3]);
- mgr->ConnectOutput(task, 0, mgr->CreateContainer(Form("%sMC", task->GetName()), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%sMC.root", task->GetName())));
+ mgr->ConnectInput(task, 0, co[2]);
+ mgr->ConnectOutput(task, 0, mgr->CreateContainer(task->GetName(), TObjArray::Class(), AliAnalysisManager::kOutputContainer, Form("TRD.Task%s.root", task->GetName())));
}
}