if(strcmp(w, "hit")==0) typ = 0;
else if(strcmp(w, "dig")==0) typ = 1;
else if(strcmp(w, "cls")==0) typ = 2;
- else if(strcmp(w, "all")==0) typ = 3;
+ else if(strcmp(w, "tlt")==0) typ = 3;
+ else if(strcmp(w, "all")==0) typ = 4;
else{
AliInfo("The following arguments are accepted:");
AliInfo(" \"hit\" : loading of MC hits");
AliInfo(" \"dig\" : loading of digits");
AliInfo(" \"cls\" : loading of reconstructed clusters");
- AliInfo(" \"all\" : loading of MC hits+digits+clusters");
+ AliInfo(" \"tlt\" : loading of online tracklets");
+ AliInfo(" \"all\" : loading everything available");
return;
}
Int_t det = c->GetDetector();
AliEveTRDLoader *loader(NULL);
switch(typ){
- case 3:
+ case 4:
loader = new AliEveTRDLoaderSim("MC");
- if(!loader->Open("galice.root")) delete loader;
+ if(!loader->Open("galice.root")){delete loader; loader=NULL;}
else{
loader->SetDataType(AliEveTRDLoader::kTRDHits | AliEveTRDLoader::kTRDDigits | AliEveTRDLoader::kTRDClusters);
break;
}
case 0:
loader = new AliEveTRDLoader("Hits");
- if(!loader->Open("TRD.Hits.root")) delete loader;
+ if(!loader->Open("TRD.Hits.root")){delete loader; loader=NULL;}
else{
- loader->SetDataType(AliEveTRDLoader::kTRDHits);
- if(typ!=3) break;
+ if(typ!=4) break;
}
case 1:
if(!loader) loader = new AliEveTRDLoader("Digits");
if(!loader->Open("TRD.Digits.root")){
- if(typ==1) delete loader;
+ if(typ==1){delete loader; loader=NULL;}
} else {
- loader->SetDataType(AliEveTRDLoader::kTRDDigits);
- if(typ!=3) break;
+ if(typ!=4) break;
}
case 2:
if(!loader) loader = new AliEveTRDLoader("Clusters");
if(!loader->Open("TRD.RecPoints.root")){
- if(typ ==2) delete loader;
+ if(typ ==2){delete loader; loader=NULL;}
+ } else {
+ if(typ!=4) break;
+ }
+ case 3:
+ if(!loader) loader = new AliEveTRDLoader("Tracklets");
+ if(!loader->Open("TRD.Tracklets.root")){
+ if(typ ==3) {delete loader; loader=NULL;}
} else {
- loader->SetDataType(AliEveTRDLoader::kTRDClusters);
break;
}
default: return;
loader->AddChambers(AliTRDgeometry::GetSector(det),AliTRDgeometry::GetStack(det), AliTRDgeometry::GetLayer(det));
// load first event
- loader->GoToEvent(AliEveEventManager::GetCurrent()->GetEventId());
-
+ if(!loader->GoToEvent(AliEveEventManager::GetCurrent()->GetEventId())) AliWarning(Form("No data loaded for event %d", AliEveEventManager::GetCurrent()->GetEventId()));
// register loader with alieve
gEve->AddElement(loader->GetChamber(det), *(BeginParents()));
//loader->SpawnEditor();
// Constructor.
SetName("tracklet");
- if(!gGeoManager){
- AliEveEventManager::AssertGeometry();
- AliInfo(Form("gGeo[%p] Closed[%c]", (void*)gGeoManager, gGeoManager->IsClosed()?'y':'n'));
- }
+ if(!gGeoManager) AliEveEventManager::AssertGeometry();
SetUserData(trklt);
// init tracklet line
Int_t sec = AliTRDgeometry::GetSector(trklt->GetDetector());
Unload();
+ Int_t ndt(0);
+ const Char_t *tn[] = {"TreeH", "TreeD", "TreeR", "tracklets"};
+ const Char_t *fn[] = {"Hits", "Digits", "RecPoints", "Tracklets"};
TTree *t(NULL); TFile *f(NULL);
- if(!(f = TFile::Open(Form("%s/%s", fDir.Data(), fFilename.Data())))){
- AliWarning(Form("File not found \"%s/%s\".", fDir.Data(), fFilename.Data()));
- return kFALSE;
- }
- if(!f->cd(Form("Event%d", ev))){
- AliError(Form("Event[%d] not found in file \"%s/%s\".", ev, fDir.Data(), fFilename.Data()));
- f->Close(); //delete f;
- return kFALSE;
- }
-
- if(fDataType&kTRDHits){
- if(!(t = (TTree*)gDirectory->Get("TreeH"))){
- AliError(Form("Tree[TreeH] not found for Event[%d].", ev));
- return kFALSE;
+ for(Int_t idt(0); idt<4; idt++){
+ if(idt==0 && !(fDataType&kTRDHits)) continue;
+ else if(idt==1 && !(fDataType&kTRDDigits)) continue;
+ else if(idt==2 && !(fDataType&kTRDClusters)) continue;
+ else if(idt==3 && !(fDataType&kTRDTracklets)) continue;
+
+ if(!(f = TFile::Open(Form("%s/TRD.%s.root", fDir.Data(), fn[idt])))){
+ AliWarning(Form("File not found \"%s/TRD.%s.root\".", fDir.Data(), fn[idt]));
+ continue;
}
- if(!LoadHits(t)) return kFALSE;
- }
- if(fDataType&kTRDDigits){
- if(!(t = (TTree*)gDirectory->Get("TreeD"))){
- AliError(Form("Tree[TreeD] not found for Event[%d].", ev));
- return kFALSE;
+ if(!f->cd(Form("Event%d", ev))){
+ AliError(Form("Event[%d] not found in file \"%s/TRD.%s.root\".", ev, fDir.Data(), fn[idt]));
+ f->Close(); //delete f;
+ continue;
}
- if(!LoadDigits(t)) return kFALSE;
- }
- if(fDataType&kTRDClusters){
- if(!(t = (TTree*)gDirectory->Get("TreeR"))){
- AliError(Form("Tree[TreeR] not found for Event[%d].", ev));
- return kFALSE;
+
+ if(!(t = (TTree*)gDirectory->Get(tn[idt]))) AliError(Form("Tree[%s] not found for Event[%d].", tn[idt], ev));
+ else{
+ switch(idt){
+ case 0:
+ if(LoadHits(t)) ndt++;
+ break;
+ case 1:
+ if(LoadDigits(t)) ndt++;
+ break;
+ case 2:
+ if(LoadClusters(t)) ndt++;
+ break;
+ case 3:
+ if(LoadTracklets(t)) ndt++;
+ break;
+ }
}
- if(!LoadClusters(t)) return kFALSE;
+ f->Close(); //delete f;
}
- if(fDataType&kTRDTracklets){
- if(!(t = (TTree*)gDirectory->Get("tracklets"))){
- AliError(Form("Tree[tracklets] not found for Event[%d].", ev));
- return kFALSE;
- }
- if(!LoadTracklets(t)) return kFALSE;
- }// else AliWarning("Please select first the type of data that you want to monitor and then hit the \"Load\" button.");
-
- f->Close(); //delete f;
-
gEve->Redraw3D();
- return kTRUE;
+ return Bool_t(ndt);
}
AliInfo("Loading ...");
if(!fChildren.size()) return kFALSE;
- AliEveTRDChamber *chmb = 0x0;
+ AliEveTRDChamber *chmb(NULL);
TClonesArray *hits = new TClonesArray("AliTRDhit", 100);
tH->SetBranchAddress("TRD", &hits);
Int_t idx, nhits;
chmb = GetChamber(det);
if(chmb) chmb->LoadHits(hits, idx);
else{
- AliTRDhit *hit = 0x0;
+ AliTRDhit *hit(NULL);
while(idx < nhits){
hit = (AliTRDhit*)hits->UncheckedAt(idx);
if(hit->GetDetector() != det) break;
AliInfo("Loading ...");
if(!fChildren.size()) return kFALSE;
- TObjArray *clusters = new TObjArray();
+ TObjArray *clusters(NULL);
tC->SetBranchAddress("TRDcluster", &clusters);
AliEveTRDChamber *chmb(NULL);
if(!fChildren.size()) return kFALSE;
- AliEveTRDChamber *chmb;
+ AliEveTRDChamber *chmb(NULL);
AliTRDdigitsManager dm;
dm.ReadDigits(tD);
for(int idet=0; idet<AliTRDgeometry::kNdet; idet++){
if(!(chmb=GetChamber(idet))) continue;
- // digits = dm.GetDigits(idet);
- // if(!digits) continue;
- // chmb->LoadDigits(digits);
chmb->LoadDigits(&dm);
}
return kTRUE;
if(!fChildren.size()) return kFALSE;
- AliEveTRDChamber *chmb = 0x0;
+ AliEveTRDChamber *chmb(NULL);
- for(int idet=0; idet<540; idet++){
+ for(int idet=0; idet<AliTRDgeometry::kNdet; idet++){
if((chmb = GetChamber(idet)))
chmb->LoadTracklets(trklTree);
}
fFilename = filename;
fDir = dir;
- Int_t count = 0;
- count += fDataType&kTRDHits;
- count += fDataType&kTRDDigits;
- count += fDataType&kTRDClusters;
- count += fDataType&kTRDTracklets;
-
TObjArray *so = fFilename.Tokenize(".");
if(((TObjString*)(*so)[0])->GetString().CompareTo("TRD") != 0){
- AliError("Filename didn't fulfill naming conventions. No TRD data will be loaded.");
+ AliError(Form("Filename %s do not fulfill AliRoot naming conventions.", filename));
+ return kFALSE;
+ }
+ if(gSystem->AccessPathName(Form("%s/%s", dir, filename))){
+ AliError(Form("Missing file %s/%s", dir, filename));
return kFALSE;
}
-
if(((TObjString*)(*so)[1])->GetString().CompareTo("Hits") == 0){
- if(count && !(fDataType&kTRDHits)){
- AliWarning("Data type set to HITS according to file name. Previous settings will be overwritten.");
- fDataType = 0;
+ if(!(fDataType&kTRDHits)){
+ AliInfo("Data type set to HITS according to file name.");
+ fDataType|=kTRDHits;
}
- fDataType|=kTRDHits;
} else if(((TObjString*)(*so)[1])->GetString().CompareTo("Digits") == 0){
- if(count && !(fDataType&kTRDDigits)){
- AliWarning("Data type set to DIGITS according to file name. Previous settings will be overwritten.");
- fDataType = 0;
+ if(!(fDataType&kTRDDigits)){
+ AliInfo("Data type set to DIGITS according to file name.");
+ fDataType|=kTRDDigits;
}
- fDataType|=kTRDDigits;
} else if(((TObjString*)(*so)[1])->GetString().CompareTo("RecPoints") == 0){
- if(count && !(fDataType&kTRDClusters)){
- AliWarning("Data type set to CLUSTERS according to file name. Previous settings will be overwritten.");
- fDataType = 0;
+ if(!(fDataType&kTRDClusters)){
+ AliInfo("Data type set to CLUSTERS according to file name.");
+ fDataType|=kTRDClusters;
}
- fDataType|=kTRDClusters;
} else if(((TObjString*)(*so)[1])->GetString().CompareTo("Tracklets") == 0){
- if(count && !(fDataType&kTRDTracklets)){
- AliWarning("Data type set to TRACKLETS according to file name. Previous settings will be overwritten.");
- fDataType = 0;
+ if(!(fDataType&kTRDTracklets)){
+ AliInfo("Data type set to TRACKLETS according to file name.");
+ fDataType|=kTRDTracklets;
}
- fDataType|=kTRDTracklets;
} else {
AliError("Filename didn't fulfill naming conventions. No data will be loaded.");
return kFALSE;
// use the return value of AddMacro (NOT_EXIST_ERROR is returned, if file does not exist)
// (-> You can also check for other return values (see AddMacro(...)))
- const Char_t *libs[] = {"libANALYSIS.so", "libANALYSISalice.so", "libTENDER.so", "libPWG1.so"};
+ const Char_t *libs[] = {"libANALYSIS.so", "libANALYSISalice.so", "libCORRFW", "libTENDER.so", "libPWG1.so"};
Int_t nlibs = static_cast<Int_t>(sizeof(libs)/sizeof(Char_t *));
for(Int_t ilib=0; ilib<nlibs; ilib++){
if(gSystem->Load(libs[ilib]) >= 0) continue;
return;
}
- const Char_t *fgkTRDPWG1taskClassName[AliTRDpwg1Helper::kNTRDQATASKS] = {
- "AliTRDcheckESD"
- ,"AliTRDinfoGen"
- ,"AliTRDcheckDET"
- ,"AliTRDefficiency"
- ,"AliTRDresolution"
- ,"AliTRDcheckPID"
- ,"AliTRDv0Monitor"
- };
+ const Char_t *taskClassName[] = {"AliTRDcheckDET", "AliTRDresolution"};
AliTRDrecoTask *task(NULL);
TList *fPlots(NULL);
- for(Int_t it=2; it<AliTRDpwg1Helper::kNTRDQATASKS; it++){
- TClass c(fgkTRDPWG1taskClassName[it]);
+ for(Int_t it=0; it<2; it++){
+ TClass c(taskClassName[it]);
task = (AliTRDrecoTask*)c.New();
+ task->InitFunctorList();
task->SetMCdata(kFALSE);
if(!(fPlots = task->GetPlotFunctors())){
- //AliWarning(Form("No Plot functors defined for task \"%s\"", fgkTRDtaskClassName[it]));
+ AliWarning(Form("No Track functors defined for task \"%s\"", taskClassName[it]));
delete task;
continue;
}
if(!(task->Histos())){
- //AliWarning(Form("No Ref Histograms defined for task \"%s\"", fgkTRDtaskClassName[it]));
+ AliWarning(Form("No Ref Histograms defined for task \"%s\"", taskClassName[it]));
delete task;
continue;
}
// export task to CINT and add functions
- gROOT->ProcessLine(Form("%s* %s = (%s*)%p;", fgkTRDPWG1taskClassName[it], task->GetName(), fgkTRDPWG1taskClassName[it], (void*)task));
- TIter iter(fPlots); TMethodCall *m = 0x0;
+ gROOT->ProcessLine(Form("%s* %s = (%s*)%p;", taskClassName[it], task->GetName(), taskClassName[it], (void*)task));
+ TIter iter(fPlots); TMethodCall *m(NULL);
while((m = dynamic_cast<TMethodCall*>(iter()))){
AddMacroFast("", Form("%s->%s", task->GetName(), m->GetMethodName()), kSingleTrackHisto);
}
fHistoDataSelected = 0;
- TMacroData* macro = 0;
+ TMacroData* macro(NULL);
TString* procCmds = new TString[procIterator->GetEntries()];
AliEveTRDTrackListMacroType* mProcType = new AliEveTRDTrackListMacroType[procIterator->GetEntries()];
// Single track histo
if (mProcType[i] == kSingleTrackHisto){
if(histos) histos[histoIndex++] = (TH1*)gROOT->ProcessLineSync(procCmds[i]);
- // Correlated tracks histo
+ // Correlated tracks histo
} else if (mProcType[i] == kCorrelTrackHisto) {
// Loop over all pairs behind the current one - together with the other loop this will be a loop
// over all pairs. We have a pair of tracks, if and only if both tracks of the pair are selected (Rnr-state)