From: jgrosseo Date: Wed, 21 Apr 2010 14:41:45 +0000 (+0000) Subject: removing TPC analysis classes from end 2006 X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=commitdiff_plain;h=7e124979ac4d7074184f476e15f24634f2f4183f removing TPC analysis classes from end 2006 --- diff --git a/PWG0/PWG0depLinkDef.h b/PWG0/PWG0depLinkDef.h index 74cb52ac943..bc132cdaa4c 100644 --- a/PWG0/PWG0depLinkDef.h +++ b/PWG0/PWG0depLinkDef.h @@ -8,9 +8,6 @@ #pragma link off all classes; #pragma link off all functions; -#pragma link C++ class AliTPCClusterHistograms+; -#pragma link C++ class AliTPCRawHistograms+; - #pragma link C++ class AlidNdPtTask+; #pragma link C++ class AlidNdPtHelper+; #pragma link C++ class AlidNdPtAnalysis+; diff --git a/PWG0/PWG0selectorsLinkDef.h b/PWG0/PWG0selectorsLinkDef.h index 1d522658097..5619502ce2e 100644 --- a/PWG0/PWG0selectorsLinkDef.h +++ b/PWG0/PWG0selectorsLinkDef.h @@ -8,9 +8,6 @@ #pragma link off all classes; #pragma link off all functions; -#pragma link C++ class AliROCESDAnalysisSelector+; -#pragma link C++ class AliROCRawAnalysisSelector+; -#pragma link C++ class AliROCClusterAnalysisSelector+; #pragma link C++ class AliHighMultiplicitySelector+; #pragma link C++ class AliMultiplicityTask+; #pragma link C++ class AliCutTask+; diff --git a/PWG0/TPC/AliROCClusterAnalysisSelector.cxx b/PWG0/TPC/AliROCClusterAnalysisSelector.cxx deleted file mode 100644 index bd509eea3a2..00000000000 --- a/PWG0/TPC/AliROCClusterAnalysisSelector.cxx +++ /dev/null @@ -1,367 +0,0 @@ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ - -/* $Id$ */ - -// -// This class analyses TPC cosmics data from clusters -// -// Authors: Jan.Fiete.Grosse-Oetringhaus@cern.ch, Claus.Jorgensen@cern.ch -// - -#include "AliROCClusterAnalysisSelector.h" - -#include -#include -#include - -#include -#include - - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "TPC/AliTPCClusterHistograms.h" - -extern TSystem* gSystem; - -ClassImp(AliROCClusterAnalysisSelector) - -AliROCClusterAnalysisSelector::AliROCClusterAnalysisSelector() : - AliSelectorRL(), - fNMaxObjectsToSave(0), - fObjectsToSave(0) -{ - // - // Constructor. Initialization of pointers - // - - fNMaxObjectsToSave = 50; - fObjectsToSave = new TObjArray(); - - for (Int_t i=0; iSetBranchStatus("*", 0); - tree->SetBranchStatus("fTimeStamp", 1); - } -} - -Bool_t AliROCClusterAnalysisSelector::Process(Long64_t entry) -{ - // - // Implement your analysis here. Do not forget to call the parent class Process by - // if (AliSelectorRL::Process(entry) == kFALSE) - // return kFALSE; - // - - if (AliSelectorRL::Process(entry) == kFALSE) - return kFALSE; - - - // reset counters - for (Int_t i=0; iStartEvent(); - - // runLoader->Dump(); - - Int_t flag = ProcessEvent(entry, kFALSE); - if (flag != 0) - ProcessEvent(entry, kTRUE, ""); - - - Int_t time = 0; - if (fESD) - if (fESD->GetTimeStamp()>1160000000) { - time = fESD->GetTimeStamp(); - } - - // finish event - for (Int_t i=0; iFinishEvent(time); - - - // TODO This should not be needed, the TTree::GetEntry() should take care of this, maybe because it has a reference member, to be analyzed - // if the ESDfriend is not deleted we get a major memory leak - // here the esdfriend seems to be also deleted, very weird behaviour.... - - delete fESD; - fESD = 0; - - return kTRUE; -} - -Int_t AliROCClusterAnalysisSelector::ProcessEvent(Long64_t entry, Bool_t detailedHistogram, const Char_t* label) -{ - // - // Looping over clusters in event and filling histograms - // - // - if detailedHistogram = kTRUE special histograms are saved (in fObjectsToSave) - // - - // save maximum N objects - if (detailedHistogram) - if (fObjectsToSave->GetEntries() > fNMaxObjectsToSave) - return 0; - - // TODO: find a clever way to handle the time - Int_t time = 0; - if (fESD) - if (fESD->GetTimeStamp()>1160000000) { - time = fESD->GetTimeStamp(); - } - - // for saving single events - AliTPCClusterHistograms* clusterHistograms[kTPCSectors]; - Bool_t keepEvent[kTPCSectors]; - for (Int_t i=0; iKeepThisEvent(why); - } - } - - Bool_t intToReturn = 0; - - // -------------- - - AliRunLoader* runLoader = GetRunLoader(); - runLoader->LoadRecPoints("TPC"); - - if (!runLoader) { - AliDebug(AliLog::kError, " Run loader not found"); - return kFALSE; - } - - TTree* tree = runLoader->GetTreeR("TPC", kFALSE); - - // load clusters to the memory - AliTPCClustersRow* clrow = new AliTPCClustersRow; - clrow->SetClass("AliTPCclusterMI"); - clrow->SetArray(0); - clrow->GetArray()->ExpandCreateFast(10000); - // - - if (!tree) { - AliDebug(AliLog::kError, " TPC cluster tree not found"); - return kFALSE; - } - - TBranch* br = tree->GetBranch("Segment"); - br->SetAddress(&clrow); - // - - Int_t j = Int_t(tree->GetEntries()); - for (Int_t i=0; iGetEntry(i); - // - for (Int_t icl=0; iclGetArray()->GetEntriesFast(); icl++){ - - AliTPCclusterMI* cluster = (AliTPCclusterMI*)clrow->GetArray()->At(icl); - - if (!cluster) - continue; - - Int_t detector = cluster->GetDetector(); - - if (detector < 0 || detector >= kTPCSectors) - { - AliDebug(AliLog::kDebug, Form("We found a cluster from invalid sector %d", detector)); - continue; - } - - if (!detailedHistogram) { - - if (!fClusterHistograms[detector]) - fClusterHistograms[detector] = new AliTPCClusterHistograms(detector,"",time,time+5*60*60); - - if (!fClusterHistograms[detector+kTPCSectors]) - fClusterHistograms[detector+kTPCSectors] = new AliTPCClusterHistograms(detector,"",time,time+5*60*60, kTRUE); - - fClusterHistograms[detector]->FillCluster(cluster, time); - fClusterHistograms[detector+kTPCSectors]->FillCluster(cluster, time); - - } // end of if !detailedHistograms - else { - // if we need the detailed histograms for this event - - if (keepEvent[detector]) { - - TString why(fClusterHistograms[detector]->WhyKeepEvent()); - - why.Append(Form("_entry_%d",entry)); - why.Append(label); - - // if clusterHistograms for this event is not there, construct it - if (!clusterHistograms[detector]) { - clusterHistograms[detector] = new AliTPCClusterHistograms(detector, why.Data()); - - // adding file and time as comment - TString comment = TString(Form("%s",fTree->GetCurrentFile()->GetName())); - comment.Append(Form(" entry %d", entry)); - if (time!=0) { - TString timeStr(TTimeStamp(time).AsString()); - timeStr.Remove(26); - - comment.Append(Form(" (%s)",timeStr.Data())); - } - clusterHistograms[detector]->SetCommentToHistograms(comment.Data()); - - } - else - clusterHistograms[detector]->FillCluster(cluster); - } // end of (keep this event) - } // - } - } - - if (!detailedHistogram) { - for (Int_t i=0; iKeepThisEvent(why)) - intToReturn = 1; - } - } - else { - for (Int_t i=0; i< kTPCSectors; i++) { - if (clusterHistograms[i]) { - fObjectsToSave->Add(clusterHistograms[i]); - } - } - } - - delete clrow; - - return intToReturn; -} - - -void AliROCClusterAnalysisSelector::SlaveTerminate() -{ - // - - if (fOutput) - { - for (Int_t i=0; iAdd(fClusterHistograms[i]); - } -} - -void AliROCClusterAnalysisSelector::Terminate() -{ - // - // read the objects from the output list and write them to a file - // the filename is modified by the object comment passed in the tree info or input list - // - - if (fOutput) - { - fOutput->Print(); - - for (Int_t i=0; i (fOutput->FindObject(AliTPCClusterHistograms::FormDetectorName(i, kFALSE))); - for (Int_t i=0; i (fOutput->FindObject(AliTPCClusterHistograms::FormDetectorName(i, kTRUE))); - } - - TNamed* comment = 0; - if (fTree && fTree->GetUserInfo()) - comment = dynamic_cast(fTree->GetUserInfo()->FindObject("comment")); - if (!comment && fInput) - comment = dynamic_cast(fInput->FindObject("comment")); - - if (comment) - { - AliDebug(AliLog::kInfo, Form("INFO: Found comment in input list: %s", comment->GetTitle())); - } - else - return; - - TFile* file = TFile::Open(Form("rocCluster_%s.root",comment->GetTitle()), "RECREATE"); - - for (Int_t i=0; iSaveHistograms(); - -// TCanvas* c = fClusterHistograms[i]->DrawHistograms(); -// TString dir; -// dir.Form("WWW/%s/%s", comment->GetTitle(), c->GetName()); -// gSystem->mkdir(dir, kTRUE); -// c->SaveAs(Form("%s/plots_%s_%s.eps",dir.Data(),comment->GetTitle(),c->GetName())); -// c->SaveAs(Form("%s/plots_%s_%s.gif",dir.Data(),comment->GetTitle(),c->GetName())); - -// c->Close(); -// delete c; - } - - gDirectory->mkdir("saved_objects"); - gDirectory->cd("saved_objects"); - - for (Int_t i=0; iGetSize(); i++) { - if (fObjectsToSave->At(i)) { - AliTPCClusterHistograms* clusterHistograms = dynamic_cast (fObjectsToSave->At(i)); - if (clusterHistograms) - clusterHistograms->SaveHistograms(); - else - fObjectsToSave->At(i)->Write(); - } - } - - gDirectory->cd("../"); - - - file->Close(); -} diff --git a/PWG0/TPC/AliROCClusterAnalysisSelector.h b/PWG0/TPC/AliROCClusterAnalysisSelector.h deleted file mode 100644 index 3740e6e8c6d..00000000000 --- a/PWG0/TPC/AliROCClusterAnalysisSelector.h +++ /dev/null @@ -1,48 +0,0 @@ -/* $Id$ */ - -#ifndef AliROCClusterAnalysisSelector_H -#define AliROCClusterAnalysisSelector_H - -#include "AliSelectorRL.h" - -class AliTPCClusterHistograms; - -class TObjArray; - -// -// TODO explain this -// - -class AliROCClusterAnalysisSelector : public AliSelectorRL { - public: - enum { kTPCSectors = 72, kTPCHists = kTPCSectors * 2 }; - - AliROCClusterAnalysisSelector(); - virtual ~AliROCClusterAnalysisSelector(); - - virtual void SlaveBegin(TTree* tree); - virtual void Init(TTree *tree); - virtual Bool_t Process(Long64_t entry); - virtual void SlaveTerminate(); - virtual void Terminate(); - - Int_t ProcessEvent(Long64_t entry, Bool_t detailedHistogram=kFALSE, const Char_t* label=""); - - - protected: - - AliTPCClusterHistograms* fClusterHistograms[kTPCHists]; // 0..71 histograms created with all clusters, 72..143 without edges - - private: - - Int_t fNMaxObjectsToSave; - TObjArray* fObjectsToSave; - - - AliROCClusterAnalysisSelector(const AliROCClusterAnalysisSelector&); - AliROCClusterAnalysisSelector& operator=(const AliROCClusterAnalysisSelector&); - - ClassDef(AliROCClusterAnalysisSelector, 0); -}; - -#endif diff --git a/PWG0/TPC/AliROCESDAnalysisSelector.cxx b/PWG0/TPC/AliROCESDAnalysisSelector.cxx deleted file mode 100644 index d3ca891757e..00000000000 --- a/PWG0/TPC/AliROCESDAnalysisSelector.cxx +++ /dev/null @@ -1,427 +0,0 @@ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ - -/* $Id$ */ - -// -// This class analyses TPC cosmics data from the ESD and the ESDfriend -// -// Authors: Jan.Fiete.Grosse-Oetringhaus@cern.ch, Claus.Jorgensen@cern.ch -// - -#include "AliROCESDAnalysisSelector.h" - -#include -#include -#include -#include <../TPC/AliTPCclusterMI.h> -#include <../TPC/AliTPCseed.h> - -#include -#include -#include -#include -#include -#include -#include - -#include "TPC/AliTPCClusterHistograms.h" - -extern TSystem* gSystem; - -ClassImp(AliROCESDAnalysisSelector) - -AliROCESDAnalysisSelector::AliROCESDAnalysisSelector() : - AliSelector(), - fESDfriend(0), - fObjectsToSave(0), - fMinNumberOfRowsIsTrack(0) -{ - // - // Constructor. Initialization of pointers - // - fMinNumberOfRowsIsTrack = 5; - - fObjectsToSave = new TObjArray(); - - for (Int_t i=0; iSetBranchAddress("ESDfriend", &fESDfriend); - - tree->SetBranchStatus("*", 0); - tree->SetBranchStatus("fTracks.*", 1); - tree->SetBranchStatus("fTimeStamp", 1); - //tree->SetBranchStatus("fTracks.fCalibContainer", 0); - } - - if (fESDfriend != 0) - AliDebug(AliLog::kInfo, "INFO: Found ESDfriend branch in chain."); -} - -Bool_t AliROCESDAnalysisSelector::Process(Long64_t entry) -{ - // - // Implement your analysis here. Do not forget to call the parent class Process by - // if (AliSelector::Process(entry) == kFALSE) - // return kFALSE; - // - - if (AliSelector::Process(entry) == kFALSE) - return kFALSE; - - // Check prerequisites - if (!fESD) - { - AliDebug(AliLog::kError, "ESD branch not available"); - return kFALSE; - } - - // Check prerequisites - if (!fESDfriend) - { - AliDebug(AliLog::kError, "ESDfriend branch not available"); - return kFALSE; - } - - if (fESD->GetNumberOfTracks() != fESDfriend->GetNumberOfTracks()) - { - AliDebug(AliLog::kError, Form("Event %lld: Number of tracks differ between ESD (%d) and ESDfriend (%d)! Skipping event!\n", entry, fESD->GetNumberOfTracks(), fESDfriend->GetNumberOfTracks())); - return kFALSE; - } - - fESD->SetESDfriend(fESDfriend); - - Int_t flag = ProcessEvent(entry, kFALSE); - if (flag == 1) - ProcessEvent(entry, kTRUE); - - // TODO This should not be needed, the TTree::GetEntry() should take care of this, maybe because it has a reference member, to be analyzed - // if the ESDfriend is not deleted we get a major memory leak - // here the esdfriend seems to be also deleted, very weird behaviour.... - - delete fESD; - fESD = 0; - - //delete fESDfriend; - //fESDfriend = 0; - - return kTRUE; -} - -Int_t AliROCESDAnalysisSelector::ProcessEvent(Long64_t entry, Bool_t detailedHistogram) -{ - // - // Looping over tracks and clusters in event and filling histograms - // - // - if detailedHistogram = kTRUE special histograms are saved (in fObjectsToSave) - // - the method returns - // 1 : if a "flash" is detected something special in this event - // - - // save maximum 50 objects - if (detailedHistogram) - if (fObjectsToSave->GetEntries() > 50) - return 0; - - // for saving single events - AliTPCClusterHistograms* clusterHistograms[kTPCSectors]; - for (Int_t i=0; iGetNumberOfTracks(); - - Int_t nSkippedSeeds = 0; - //Int_t nSkippedTracks = 0; - - // for "flash" detection - Int_t nClusters = 0; - Float_t clusterQtotSumVsTime[250]; - for (Int_t z=0; z<250; z++) - clusterQtotSumVsTime[z] = 0; - - // loop over esd tracks - for (Int_t t=0; t (fESD->GetTrack(t)); - if (!esdTrack) - { - AliDebug(AliLog::kError, Form("ERROR: Could not retrieve track %d.", t)); - continue; - } - - AliESDfriendTrack* friendtrack = const_cast (dynamic_cast (esdTrack->GetFriendTrack())); - if (!friendtrack) - { - AliDebug(AliLog::kError, Form("ERROR: Could not retrieve friend of track %d.", t)); - continue; - } - - const AliTPCseed* seed = dynamic_cast (friendtrack->GetCalibObject(0)); - if (!seed) - { - AliDebug(AliLog::kDebug, Form("ERROR: Could not retrieve seed of track %d.", t)); - nSkippedSeeds++; - continue; - } - - /*if (!AcceptTrack(seed, fMinNumberOfRowsIsTrack)) - { - AliDebug(AliLog::kDebug, Form("INFO: Rejected track %d.", t)); - nSkippedTracks++; - continue; - }*/ - - for (Int_t clusterID = 0; clusterID < 160; clusterID++) - { - AliTPCclusterMI* cluster = seed->GetClusterPointer(clusterID); - if (!cluster) - continue; - - Int_t detector = cluster->GetDetector(); - - if (detector < 0 || detector >= kTPCSectors) - { - AliDebug(AliLog::kDebug, Form("We found a cluster from invalid sector %d", detector)); - continue; - } - - if (!detailedHistogram) { - // TODO: find a clever way to handle the time - Int_t time = 0; - - if (fESD->GetTimeStamp()>1160000000) - time = fESD->GetTimeStamp(); - - if (!fClusterHistograms[detector]) - fClusterHistograms[detector] = new AliTPCClusterHistograms(detector,"",time,time+5*60*60); - - if (!fClusterHistograms[detector+kTPCSectors]) - fClusterHistograms[detector+kTPCSectors] = new AliTPCClusterHistograms(detector,"",time,time+5*60*60, kTRUE); - - fClusterHistograms[detector]->FillCluster(cluster, time); - fClusterHistograms[detector+kTPCSectors]->FillCluster(cluster, time); - - Int_t z = Int_t(cluster->GetZ()); - if (z>=0 && z<250) { - nClusters++; - clusterQtotSumVsTime[z] += cluster->GetQ(); - } - } // end of if !detailedHistograms - else { - // if we need the detailed histograms for this event - if (!clusterHistograms[detector]) - clusterHistograms[detector] = new AliTPCClusterHistograms(detector, Form("flash_entry%d", entry)); - - clusterHistograms[detector]->FillCluster(cluster); - } - } - - for (Int_t i=0; iFillTrack(seed); - - } - - // check if there's a very large q deposit ("flash") - if (!detailedHistogram) { - for (Int_t z=0; z<250; z++) { - if (clusterQtotSumVsTime[z] > 150000) { - printf(Form(" \n -> Entry %lld sum of clusters at time %d is %f, ESD timestamp: %s (%d) \n \n", entry, z, clusterQtotSumVsTime[z], TTimeStamp(fESD->GetTimeStamp()).AsString(), fESD->GetTimeStamp())); - intToReturn = 1; - } - } - } - else { - for (Int_t i=0; i< kTPCSectors; i++) { - if (clusterHistograms[i]) { - fObjectsToSave->Add(clusterHistograms[i]); - } - } - } - -// if (nSkippedSeeds > 0) -// printf("WARNING: The seed was not found for %d out of %d tracks.\n", nSkippedSeeds, nTracks); -// if (nSkippedTracks > 0) -// printf("INFO: Rejected %d out of %d tracks.\n", nSkippedTracks, nTracks); - - return intToReturn; -} - -Bool_t AliROCESDAnalysisSelector::AcceptTrack(const AliTPCseed* track, Int_t minRowsIncluded) { - // - // check if the track should be accepted. - // - const Int_t kMinClusters = 5; - const Float_t kMinRatio = 0.75; - const Float_t kMax1pt = 0.5; - - Int_t nRowsUsedByTracks = 0; - Bool_t rowIncluded[96]; - - Float_t totalQtot = 0; - Int_t nClusters = 0; - - for(Int_t r=0; r<96; r++) - rowIncluded[r] = kFALSE; - - for (Int_t clusterID = 0; clusterID < 160; clusterID++) { - AliTPCclusterMI* cluster = track->GetClusterPointer(clusterID); - - if (!cluster) - continue; - - Float_t qTot = cluster->GetQ(); - - nClusters++; - totalQtot += qTot; - - if (!rowIncluded[cluster->GetRow()]) { - nRowsUsedByTracks++; - rowIncluded[cluster->GetRow()] = kTRUE; - } - } - - Float_t meanQtot = totalQtot/nClusters; - - if (meanQtot<70) - return kFALSE; - - if (nRowsUsedByTracks < minRowsIncluded) - return kFALSE; - - // printf(Form(" TRACK: n clusters = %d, n pad rows = %d \n",track->GetNumberOfClusters(), nRowsUsedByTracks)); - - if (track->GetNumberOfClusters()GetNumberOfClusters()/(track->GetNFoundable()+1.); - if (ratioGetSigned1Pt(); - if (TMath::Abs(mpt)>kMax1pt) return kFALSE; - - //if (TMath::Abs(track->GetZ())>240.) return kFALSE; - //if (TMath::Abs(track->GetZ())<10.) return kFALSE; - //if (TMath::Abs(track->GetTgl())>0.03) return kFALSE; - - return kTRUE; -} - -void AliROCESDAnalysisSelector::SlaveTerminate() -{ - // - - if (fOutput) - { - for (Int_t i=0; iAdd(fClusterHistograms[i]); - } -} - -void AliROCESDAnalysisSelector::Terminate() -{ - // - // read the objects from the output list and write them to a file - // the filename is modified by the object comment passed in the tree info or input list - // - - if (fOutput) - { - fOutput->Print(); - - for (Int_t i=0; i (fOutput->FindObject(AliTPCClusterHistograms::FormDetectorName(i, kFALSE))); - for (Int_t i=0; i (fOutput->FindObject(AliTPCClusterHistograms::FormDetectorName(i, kTRUE))); - } - - TNamed* comment = 0; - if (fTree && fTree->GetUserInfo()) - comment = dynamic_cast(fTree->GetUserInfo()->FindObject("comment")); - if (!comment && fInput) - comment = dynamic_cast(fInput->FindObject("comment")); - - if (comment) - { - AliDebug(AliLog::kInfo, Form("INFO: Found comment in input list: %s", comment->GetTitle())); - } - else - return; - - TFile* file = TFile::Open(Form("rocESD_%s.root",comment->GetTitle()), "RECREATE"); - - for (Int_t i=0; iSaveHistograms(); - // TCanvas* c = fClusterHistograms[i]->DrawHistograms(comment->GetTitle()); - //TString dir; - //dir.Form("WWW/%s", comment->GetTitle(), c->GetName()); - //gSystem->mkdir(dir, kTRUE); - //c->SaveAs(Form("%s/plots_%s_%s.eps",dir.Data(),comment->GetTitle(),c->GetName())); - //c->SaveAs(Form("%s/plots_%s_%s.gif",dir.Data(),comment->GetTitle(),c->GetName())); - - //c->Close(); - //delete c; - } - - gDirectory->mkdir("saved_objects"); - gDirectory->cd("saved_objects"); - - for (Int_t i=0; iGetSize(); i++) { - if (fObjectsToSave->At(i)) { - AliTPCClusterHistograms* clusterHistograms = dynamic_cast (fObjectsToSave->At(i)); - if (clusterHistograms) - clusterHistograms->SaveHistograms(); - else - fObjectsToSave->At(i)->Write(); - } - } - - gDirectory->cd("../"); - - - file->Close(); -} diff --git a/PWG0/TPC/AliROCESDAnalysisSelector.h b/PWG0/TPC/AliROCESDAnalysisSelector.h deleted file mode 100644 index e632728a7d3..00000000000 --- a/PWG0/TPC/AliROCESDAnalysisSelector.h +++ /dev/null @@ -1,53 +0,0 @@ -/* $Id$ */ - -#ifndef AliROCESDAnalysisSelector_H -#define AliROCESDAnalysisSelector_H - -#include "AliSelector.h" - -class AliTPCClusterHistograms; -class AliESD; -class AliESDfriend; -class AliTPCseed; - -class TObjArray; - -// -// TODO explain this -// - -class AliROCESDAnalysisSelector : public AliSelector { - public: - enum { kTPCSectors = 72, kTPCHists = kTPCSectors * 2 }; - - AliROCESDAnalysisSelector(); - virtual ~AliROCESDAnalysisSelector(); - - virtual void SlaveBegin(TTree* tree); - virtual void Init(TTree *tree); - virtual Bool_t Process(Long64_t entry); - virtual void SlaveTerminate(); - virtual void Terminate(); - - Int_t ProcessEvent(Long64_t entry, Bool_t detailedHistogram=kFALSE); - - Bool_t AcceptTrack(const AliTPCseed* track, Int_t minRowsIncluded=0); - - protected: - AliESDfriend* fESDfriend; // ESD friend pointer - - AliTPCClusterHistograms* fClusterHistograms[kTPCHists]; // 0..71 histograms created with all clusters, 72..143 without edges - - private: - - TObjArray* fObjectsToSave; - - Int_t fMinNumberOfRowsIsTrack; - - AliROCESDAnalysisSelector(const AliROCESDAnalysisSelector&); - AliROCESDAnalysisSelector& operator=(const AliROCESDAnalysisSelector&); - - ClassDef(AliROCESDAnalysisSelector, 0); -}; - -#endif diff --git a/PWG0/TPC/AliROCRawAnalysisSelector.cxx b/PWG0/TPC/AliROCRawAnalysisSelector.cxx deleted file mode 100644 index 1154ecc7ca7..00000000000 --- a/PWG0/TPC/AliROCRawAnalysisSelector.cxx +++ /dev/null @@ -1,207 +0,0 @@ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ - -/* $Id$ */ - - -#include "AliROCRawAnalysisSelector.h" - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - - -ClassImp(AliROCRawAnalysisSelector) - -AliROCRawAnalysisSelector::AliROCRawAnalysisSelector() : - TSelector(), - fRawEvent(0), - fTree(0), - fParam(0) -{ - // - // Constructor. Initialization of pointers - // - - for (Int_t i=0; iSetBranchAddress("rawevent", &fRawEvent); - } -} - -Bool_t AliROCRawAnalysisSelector::Process(Long64_t entry) -{ - // - // - // - - AliDebug(AliLog::kInfo, Form("Processing event %lld", entry)); - - fTree->GetTree()->GetEntry(entry); - - if (!fRawEvent) - { - AliDebug(AliLog::kError, "fRawEvent empty"); - return kFALSE; - } - - AliRawReaderRoot* rawReader = new AliRawReaderRoot(fRawEvent); - - const AliRawEventHeaderBase* eventHeader = dynamic_cast (rawReader->GetEventHeader()); - if (eventHeader) - { - eventHeader->Print(); - - UInt_t timeStamp = eventHeader->Get("Timestamp"); - UInt_t eventType = eventHeader->Get("Type"); - - AliDebug(AliLog::kInfo, Form("Time stamp: %s, event type %d", TTimeStamp(timeStamp).AsString(), eventType)); - } - - AliTPCRawStream* tpcRawStream = new AliTPCRawStream(rawReader); - - const Int_t kNIS = fParam->GetNInnerSector(); - const Int_t kNOS = fParam->GetNOuterSector(); - const Int_t kNS = kNIS + kNOS; - - for (Int_t sector = 0; sector < kNS; sector++) - { - AliDebug(AliLog::kInfo, Form("*** Looking at sector %d ***", sector)); - - Int_t nRows = 0; - Int_t nDDLs = 0, indexDDL = 0; - - if (sector < kNIS) - { - nRows = fParam->GetNRowLow(); - nDDLs = 2; - indexDDL = sector * 2; - } - else - { - nRows = fParam->GetNRowUp(); - nDDLs = 4; - indexDDL = (sector-kNIS) * 4 + kNIS * 2; - } - - // Loas the raw data for corresponding DDLs - rawReader->Reset(); - rawReader->Select("TPC",indexDDL,indexDDL+nDDLs-1); - - AliDebug(AliLog::kDebug, Form("Selected DDLs %d ... %d", indexDDL, indexDDL+nDDLs-1)); - - Int_t count = 0; - - while (tpcRawStream->Next()) - { - if (tpcRawStream->GetSector() != sector) - { - AliDebug(AliLog::kError, Form("Sector index mismatch ! Expected (%d), but got (%d) !",sector,tpcRawStream->GetSector())); - return kFALSE; - } - - if ((count++ % 100000) == 0) - AliDebug(AliLog::kDebug, Form("Found %d. digit in sector %d: row %d, pad %d, time %d, signal %d", count, - tpcRawStream->GetSector(), tpcRawStream->GetRow(), tpcRawStream->GetPad(), tpcRawStream->GetTime(), tpcRawStream->GetSignal())); - - if (!fHistograms[sector]) - { - // not sure if this is still needed, should prevent creation of the histogram in the opened root file - gROOT->cd(); - fHistograms[sector] = new AliTPCRawHistograms(sector); - } - - fHistograms[sector]->FillDigit(tpcRawStream); - } - } - - delete fRawEvent; - fRawEvent = 0; - - return kTRUE; -} - -void AliROCRawAnalysisSelector::SlaveTerminate() -{ - // - for (Int_t i=0; iAdd(fHistograms[i]); -} - -void AliROCRawAnalysisSelector::Terminate() -{ - AliDebug(AliLog::kInfo, "Terminate...."); - - // TODO read from output list for PROOF - - TFile* file = TFile::Open("rocRaw.root", "RECREATE"); - - for (Int_t i=0; iSaveHistograms(); - - file->Close(); - - for (Int_t i=0; iDrawHistograms(); -} diff --git a/PWG0/TPC/AliROCRawAnalysisSelector.h b/PWG0/TPC/AliROCRawAnalysisSelector.h deleted file mode 100644 index d40b24ad7dd..00000000000 --- a/PWG0/TPC/AliROCRawAnalysisSelector.h +++ /dev/null @@ -1,46 +0,0 @@ -/* $Id$ */ - -#ifndef AliROCRawAnalysisSelector_H -#define AliROCRawAnalysisSelector_H - -#include "TSelector.h" - -// -// TODO explain this -// - -class AliRawVEvent; -class TTree; -class AliTPCParamSR; -class AliTPCRawHistograms; - -class AliROCRawAnalysisSelector : public TSelector { - public: - enum { kTPCSectors = 72 }; - - AliROCRawAnalysisSelector(); - virtual ~AliROCRawAnalysisSelector(); - - virtual Int_t Version() const {return 1;} - virtual void SlaveBegin(TTree* tree); - virtual void Init(TTree *tree); - virtual Bool_t Process(Long64_t entry); - virtual void SlaveTerminate(); - virtual void Terminate(); - - protected: - AliRawVEvent* fRawEvent; - TTree* fTree; - - AliTPCParamSR* fParam; // TPC hardware params - - AliTPCRawHistograms* fHistograms[kTPCSectors]; - - private: - AliROCRawAnalysisSelector(const AliROCRawAnalysisSelector&); - AliROCRawAnalysisSelector& operator=(const AliROCRawAnalysisSelector&); - - ClassDef(AliROCRawAnalysisSelector, 0); -}; - -#endif diff --git a/PWG0/TPC/AliTPCClusterHistograms.cxx b/PWG0/TPC/AliTPCClusterHistograms.cxx deleted file mode 100644 index fafa6a7fadf..00000000000 --- a/PWG0/TPC/AliTPCClusterHistograms.cxx +++ /dev/null @@ -1,1010 +0,0 @@ -/* $Id$ */ - -// This class contains a number of histograms for diagnostics of a TPC -// read out chamber from the reconstructed clusters. -// -// TODO: -// -// -// - -#include "AliTPCClusterHistograms.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -// uncomment if working with version after release that has new cluster scheme -//#define NEWALIROOT - -//____________________________________________________________________ -ClassImp(AliTPCClusterHistograms) - -//____________________________________________________________________ -AliTPCClusterHistograms::AliTPCClusterHistograms() - : TNamed(), - fTimeStart(0), - fTimeStop(0), - fhQmaxVsRow(0), - fhQtotVsRow(0), - fhQtotProfileVsRow(0), - fhQmaxProfileVsRow(0), - fhQtotVsDistanceToEdge(0), - fhQtotProfileVsDistanceToEdge(0), - fhNClustersYVsRow(0), - fhNClustersZVsRow(0), - fhSigmaYVsRow(0), - fhSigmaZVsRow(0), - fhQmaxProfileYVsRow(0), - fhQtotProfileYVsRow(0), - fhSigmaYProfileYVsRow(0), - fhSigmaZProfileYVsRow(0), - fhQmaxProfileZVsRow(0), - fhQtotProfileZVsRow(0), - fhSigmaYProfileZVsRow(0), - fhSigmaZProfileZVsRow(0), - fhMeanQtotVsTime(0), - fhQtotVsTime(0), - fhMeanNClustersVsTime(0), - fhNClustersVsTime(0), - fhTrackQtotPerCluster(0), - fhTrackQtotPerClusterVsPhi(0), - fhTrackQtotPerClusterVsTheta(0), - fhTrackMeanQtotPerClusterVsPhi(0), - fhTrackMeanQtotPerClusterVsTheta(0), - fhMeanNTracksVsTime(), - fhNEventsVsTime(), - fDetector(0), - fIsIROC(kFALSE), - fEdgeSuppression(kFALSE), - fNClustersInEvent(0), - fQtotInEvent(0), - fMaxQtotInEvent(0), - fKeepEvent(0), - fWhyKeepEvent(), - fCommentToHistograms() -{ - // default constructor -} - -//____________________________________________________________________ -AliTPCClusterHistograms::AliTPCClusterHistograms(Int_t detector, const Char_t* comment, Int_t timeStart, Int_t timeStop, Bool_t edgeSuppression) - : TNamed(), - fTimeStart(0), - fTimeStop(0), - fhQmaxVsRow(0), - fhQtotVsRow(0), - fhQtotProfileVsRow(0), - fhQmaxProfileVsRow(0), - fhQtotVsDistanceToEdge(0), - fhQtotProfileVsDistanceToEdge(0), - fhNClustersYVsRow(0), - fhNClustersZVsRow(0), - fhSigmaYVsRow(0), - fhSigmaZVsRow(0), - fhQmaxProfileYVsRow(0), - fhQtotProfileYVsRow(0), - fhSigmaYProfileYVsRow(0), - fhSigmaZProfileYVsRow(0), - fhQmaxProfileZVsRow(0), - fhQtotProfileZVsRow(0), - fhSigmaYProfileZVsRow(0), - fhSigmaZProfileZVsRow(0), - fhMeanQtotVsTime(0), - fhQtotVsTime(0), - fhMeanNClustersVsTime(0), - fhNClustersVsTime(0), - fhTrackQtotPerCluster(0), - fhTrackQtotPerClusterVsPhi(0), - fhTrackQtotPerClusterVsTheta(0), - fhTrackMeanQtotPerClusterVsPhi(0), - fhTrackMeanQtotPerClusterVsTheta(0), - fhMeanNTracksVsTime(), - fhNEventsVsTime(), - fDetector(0), - fIsIROC(kFALSE), - fEdgeSuppression(edgeSuppression), - fNClustersInEvent(0), - fQtotInEvent(0), - fMaxQtotInEvent(0), - fKeepEvent(0), - fWhyKeepEvent(), - fCommentToHistograms() -{ - // constructor - - // make name and title - if (detector < 0 || detector >= 72) { - AliDebug(AliLog::kError, Form("Detector %d does not exist", detector)); - return; - } - - TString name(FormDetectorName(detector, edgeSuppression, comment)); - - fNClustersInEvent = 0; - fQtotInEvent = 0; - fMaxQtotInEvent = 0; - - fKeepEvent = kFALSE; - fWhyKeepEvent = TString("hi"); - - fDetector = detector; - if (detector < 36) - fIsIROC = kTRUE; - - SetName(name); - SetTitle(Form("%s (detector %d)",name.Data(), detector)); - - // rounding down to the closest hour and starting 10 hours before - fTimeStart = 3600*UInt_t(timeStart/3600) - 36000; - // rounding up to the closest hour - fTimeStop = 3600*UInt_t((3600 + timeStop)/3600); - // each time bin covers 5 min - Int_t nTimeBins = (fTimeStop-fTimeStart)/300; - - // printf(Form(" start time: %d, stop time: %d \n",fTimeStart, fTimeStop)); - - #define BINNING_Z 250, 0, 250 - - Float_t yRange = 45; - Int_t nPadRows = 96; - - if (fIsIROC) - { - yRange = 25; - nPadRows = 63; - } - - // 1 bin for each 0.5 cm - Int_t nBinsY = Int_t(4*yRange); - - // do not add this hists to the directory - Bool_t oldStatus = TH1::AddDirectoryStatus(); - TH1::AddDirectory(kFALSE); - - //defining histograms and profile plots - fhQmaxVsRow = new TH2F("QmaxVsPadRow", "Qmax vs. pad row;Pad row;Qmax", nPadRows+2, -1.5, nPadRows+0.5, 500, 0, 500); - fhQtotVsRow = new TH2F("QtotVsPadRow", "Qtot vs. pad row;Pad row;Qtot", nPadRows+2, -1.5, nPadRows+0.5, 400, 0, 4000); - - fhQmaxProfileVsRow = new TProfile("MeanQmaxVsPadRow","Mean Qmax vs. pad row;Pad row;Mean Qmax",nPadRows+2, -1.5, nPadRows+0.5); - fhQtotProfileVsRow = new TProfile("MeanQtotVsPadRow","Mean Qtot vs. pad row;Pad row;Mean Qtot",nPadRows+2, -1.5, nPadRows+0.5); - - fhNClustersYVsRow = new TH2F("NClusters y vs pad row","N clusters y vs pad;Pad row;y",nPadRows+2, -1.5, nPadRows+0.5, nBinsY, -yRange, yRange); - fhNClustersZVsRow = new TH2F("NClusters z vs pad row","N clusters z vs pad;Pad row;z",nPadRows+2, -1.5, nPadRows+0.5, BINNING_Z); - - fhSigmaYVsRow = new TH2F("SigmaYVsPadRow", "Sigma Y vs. pad row;Pad row;#sigma_{Y}", nPadRows+2, -1.5, nPadRows+0.5, 100, 0, 0.5); - fhSigmaZVsRow = new TH2F("SigmaZVsPadRow", "Sigma Z vs. pad row;Pad row;#sigma_{Z}", nPadRows+2, -1.5, nPadRows+0.5, 100, 0, 0.5); - - fhQmaxProfileYVsRow = new TProfile2D("MeanQmaxYVsPadRow","Mean Qmax, y vs pad row;Pad row;y",nPadRows+2, -1.5, nPadRows+0.5, nBinsY, -yRange, yRange); - fhQtotProfileYVsRow = new TProfile2D("MeanQtotYVsPadRow","Mean Qtot, y vs pad row;Pad row;y",nPadRows+2, -1.5, nPadRows+0.5, nBinsY, -yRange, yRange); - fhSigmaYProfileYVsRow = new TProfile2D("MeanSigmaYYVsPadRow","Mean Sigma y, y vs pad row;Pad row;y",nPadRows+2, -1.5, nPadRows+0.5, nBinsY, -yRange, yRange); - fhSigmaZProfileYVsRow = new TProfile2D("MeanSigmaZYVsPadRow","Mean Sigma z, y vs pad row;Pad row;y",nPadRows+2, -1.5, nPadRows+0.5, nBinsY, -yRange, yRange); - - fhQmaxProfileZVsRow = new TProfile2D("MeanQmaxZVsPadRow","Mean Qmax, z vs pad row;Pad row;z",nPadRows+2, -1.5, nPadRows+0.5, BINNING_Z); - fhQtotProfileZVsRow = new TProfile2D("MeanQtotZVsPadRow","Mean Qtot, z vs pad row;Pad row;z",nPadRows+2, -1.5, nPadRows+0.5, BINNING_Z); - fhSigmaYProfileZVsRow = new TProfile2D("MeanSigmaYZVsPadRow","Mean Sigma y, z vs pad row;Pad row;z",nPadRows+2, -1.5, nPadRows+0.5, BINNING_Z); - fhSigmaZProfileZVsRow = new TProfile2D("MeanSigmaZZVsPadRow","Mean Sigma z, z vs pad row;Pad row;z",nPadRows+2, -1.5, nPadRows+0.5, BINNING_Z); - - - TString start(TTimeStamp(fTimeStart).AsString()); - // TString stop(TTimeStamp(fTimeStart).AsString()); - start.Remove(26); - - fhMeanQtotVsTime = new TProfile("MeanQtotVsTime",Form("Mean Qtot vs. time (start %s , 1 min bins); time; Qtot",start.Data()),5*nTimeBins, fTimeStart, fTimeStop); - fhQtotVsTime = new TH2F("QtotVsTime",Form("Qtot vs. time (start %s , 1 min bins); time; Qtot",start.Data()),5*nTimeBins, fTimeStart, fTimeStop,400,0,2000); - - fhMeanNClustersVsTime = new TProfile("MeanNClustersVsTime",Form("Mean N Cluster vs. time (start %s , 5 min bins); time; NClusters",start.Data()),nTimeBins, fTimeStart, fTimeStop); - fhNClustersVsTime = new TH2F("NClustersVsTime",Form("N Clusters vs. time (start %s , 5 min bins); time; NClusters",start.Data()),nTimeBins, fTimeStart, fTimeStop,400,-0.5,3999.5); - - fhQmaxProfileVsRow->SetLineWidth(2); - fhQtotProfileVsRow->SetLineWidth(2); - - fhMeanQtotVsTime->SetLineWidth(2); - - // histograms related to tracks - - fhTrackQtotPerCluster = new TH1F("QtotPerCluster","Qtot per cluster; (Sum Qtot)/clusters",200,0,2000); - fhTrackQtotPerCluster->SetMarkerStyle(22); - fhTrackQtotPerCluster->SetMarkerSize(1); - - fhTrackQtotPerClusterVsPhi = new TH2F("QtotPerClusterVsPhi","QtotPerCluster vs Phi; Phi; (Sum Qtot)/clusters",40,-2,2,200,0,2000); - fhTrackQtotPerClusterVsTheta = new TH2F("QtotPerClusterVsTheta","QtotPerCluster vs Theta; Theta; (Sum Qtot)/clusters",40,-2,2,200,0,2000); - - fhTrackMeanQtotPerClusterVsPhi = new TProfile("MeanQtotPerClusterVsPhi", "QtotPerCluster vs Phi; Phi; Mean (Sum Qtot)/clusters",40,-2,2); - fhTrackMeanQtotPerClusterVsTheta = new TProfile("MeanQtotPerClusterVsTheta", "QtotPerCluster vs Theta; Theta; Mean (Sum Qtot)/clusters",40,-2,2); - - fhTrackMeanQtotPerClusterVsPhi->SetLineWidth(2); - fhTrackMeanQtotPerClusterVsTheta->SetLineWidth(2); - - fhMeanNTracksVsTime = new TProfile("MeanNTracksVsTime",Form("Mean n tracks vs. time (start %s , 5 min bins); time; N tracks",start.Data()),nTimeBins, fTimeStart, fTimeStop); - - fhNEventsVsTime = new TH1F("NEventsVsTime",Form("N events vs. time (start %s , 5 min bins); time; N events",start.Data()),nTimeBins, fTimeStart, fTimeStop); - - TH1::AddDirectory(oldStatus); -} - -//____________________________________________________________________ -AliTPCClusterHistograms::AliTPCClusterHistograms(const AliTPCClusterHistograms& c) : TNamed(c), - fTimeStart(0), - fTimeStop(0), - fhQmaxVsRow(0), - fhQtotVsRow(0), - fhQtotProfileVsRow(0), - fhQmaxProfileVsRow(0), - fhQtotVsDistanceToEdge(0), - fhQtotProfileVsDistanceToEdge(0), - fhNClustersYVsRow(0), - fhNClustersZVsRow(0), - fhSigmaYVsRow(0), - fhSigmaZVsRow(0), - fhQmaxProfileYVsRow(0), - fhQtotProfileYVsRow(0), - fhSigmaYProfileYVsRow(0), - fhSigmaZProfileYVsRow(0), - fhQmaxProfileZVsRow(0), - fhQtotProfileZVsRow(0), - fhSigmaYProfileZVsRow(0), - fhSigmaZProfileZVsRow(0), - fhMeanQtotVsTime(0), - fhQtotVsTime(0), - fhMeanNClustersVsTime(0), - fhNClustersVsTime(0), - fhTrackQtotPerCluster(0), - fhTrackQtotPerClusterVsPhi(0), - fhTrackQtotPerClusterVsTheta(0), - fhTrackMeanQtotPerClusterVsPhi(0), - fhTrackMeanQtotPerClusterVsTheta(0), - fhMeanNTracksVsTime(), - fhNEventsVsTime(), - fDetector(0), - fIsIROC(kFALSE), - fEdgeSuppression(kFALSE), - fNClustersInEvent(0), - fQtotInEvent(0), - fMaxQtotInEvent(0), - fKeepEvent(0), - fWhyKeepEvent(), - fCommentToHistograms() -{ - // copy constructor - ((AliTPCClusterHistograms &)c).Copy(*this); -} - -//____________________________________________________________________ -AliTPCClusterHistograms::~AliTPCClusterHistograms() -{ - // - // destructor - // - - if (fhQmaxVsRow) { - delete fhQmaxVsRow; - fhQmaxVsRow = 0; - } - if (fhQtotVsRow) { - delete fhQtotVsRow; - fhQtotVsRow = 0; - } - if (fhQmaxProfileVsRow) { - delete fhQmaxProfileVsRow; - fhQmaxProfileVsRow = 0; - } - if (fhQtotProfileVsRow) { - delete fhQtotProfileVsRow; - fhQtotProfileVsRow = 0; - } - if (fhNClustersYVsRow) { - delete fhNClustersYVsRow; - fhNClustersYVsRow = 0; - } - if (fhNClustersZVsRow) { - delete fhNClustersZVsRow; - fhNClustersZVsRow = 0; - } - if (fhSigmaYVsRow) { - delete fhSigmaYVsRow; - fhSigmaYVsRow = 0; - } - if (fhSigmaZVsRow) { - delete fhSigmaZVsRow; - fhSigmaZVsRow = 0; - } - if (fhQmaxProfileYVsRow) { - delete fhQmaxProfileYVsRow; - fhQmaxProfileYVsRow = 0; - } - if (fhQtotProfileYVsRow) { - delete fhQtotProfileYVsRow; - fhQtotProfileYVsRow = 0; - } - if (fhSigmaYProfileYVsRow) { - delete fhSigmaYProfileYVsRow; - fhSigmaYProfileYVsRow = 0; - } - if (fhSigmaZProfileYVsRow) { - delete fhSigmaZProfileYVsRow; - fhSigmaZProfileYVsRow = 0; - } - if (fhQmaxProfileZVsRow) { - delete fhQmaxProfileZVsRow; - fhQmaxProfileZVsRow = 0; - } - if (fhQtotProfileZVsRow) { - delete fhQtotProfileZVsRow; - fhQtotProfileZVsRow = 0; - } - if (fhSigmaYProfileZVsRow) { - delete fhSigmaYProfileZVsRow; - fhSigmaYProfileZVsRow = 0; - } - if (fhSigmaZProfileZVsRow) { - delete fhSigmaZProfileZVsRow; - fhSigmaZProfileZVsRow = 0; - } - if (fhMeanQtotVsTime) { - delete fhMeanQtotVsTime; - fhMeanQtotVsTime = 0; - } - if (fhQtotVsTime) { - delete fhQtotVsTime; - fhQtotVsTime = 0; - } - if (fhMeanNClustersVsTime) { - delete fhMeanNClustersVsTime; - fhMeanNClustersVsTime = 0; - } - if (fhNClustersVsTime) { - delete fhNClustersVsTime; - fhNClustersVsTime = 0; - } - if (fhTrackQtotPerCluster) { - delete fhTrackQtotPerCluster; - fhTrackQtotPerCluster = 0; - } - if (fhTrackQtotPerClusterVsPhi) { - delete fhTrackQtotPerClusterVsPhi; - fhTrackQtotPerClusterVsPhi = 0; - } - if (fhTrackQtotPerClusterVsTheta) { - delete fhTrackQtotPerClusterVsTheta; - fhTrackQtotPerClusterVsTheta = 0; - } - if (fhTrackMeanQtotPerClusterVsPhi) { - delete fhTrackMeanQtotPerClusterVsPhi; - fhTrackMeanQtotPerClusterVsPhi = 0; - } - if (fhTrackMeanQtotPerClusterVsTheta) { - delete fhTrackMeanQtotPerClusterVsTheta; - fhTrackMeanQtotPerClusterVsTheta = 0; - } - if (fhMeanNTracksVsTime) { - delete fhMeanNTracksVsTime; - fhMeanNTracksVsTime = 0; - } - if (fhNEventsVsTime) { - delete fhNEventsVsTime; - fhNEventsVsTime = 0; - } -} - -//____________________________________________________________________ -AliTPCClusterHistograms &AliTPCClusterHistograms::operator=(const AliTPCClusterHistograms &c) -{ - // assigment operator - - if (this != &c) - ((AliTPCClusterHistograms &) c).Copy(*this); - - return *this; -} - -//____________________________________________________________________ -TString AliTPCClusterHistograms::FormDetectorName(Int_t detector, Bool_t edgeSuppression, const char* comment) -{ - // - // creates a readable name from the detector number - // - - Int_t sector = detector%18; - TString side; - TString inout; - - if (detector<18 || ( detector>=36 && detector<54)) - side.Form("A"); - else - side.Form("C"); - - if (detector<36) - inout.Form("IROC"); - else - inout.Form("OROC"); - - TString name; - name.Form("sector_%s%d_%s", side.Data(), sector, inout.Data()); - - if (edgeSuppression) - name += "_noedge"; - - if (comment) - name += comment; - - return name; -} - -//____________________________________________________________________ -Long64_t AliTPCClusterHistograms::Merge(TCollection* list) -{ - // Merge a list of AliTPCClusterHistograms objects with this (needed for - // PROOF). - // Returns the number of merged objects (including this). - - if (!list) - return 0; - - if (list->IsEmpty()) - return 1; - - TIterator* iter = list->MakeIterator(); - TObject* obj; - - // collections of measured and generated histograms - TList* collectionQmaxVsRow = new TList; - TList* collectionQtotVsRow = new TList; - - TList* collectionQmaxProfileVsRow = new TList; - TList* collectionQtotProfileVsRow = new TList; - - TList* collectionNClustersYVsRow = new TList; - TList* collectionNClustersZVsRow = new TList; - - TList* collectionSigmaYVsRow = new TList; - TList* collectionSigmaZVsRow = new TList; - - TList* collectionQmaxProfileYVsRow = new TList; - TList* collectionQtotProfileYVsRow = new TList; - TList* collectionSigmaYProfileYVsRow = new TList; - TList* collectionSigmaZProfileYVsRow = new TList; - - TList* collectionQmaxProfileZVsRow = new TList; - TList* collectionQtotProfileZVsRow = new TList; - TList* collectionSigmaYProfileZVsRow = new TList; - TList* collectionSigmaZProfileZVsRow = new TList; - - TList* collectionMeanQtotVsTime = new TList; - TList* collectionQtotVsTime = new TList; - - TList* collectionMeanNClustersVsTime = new TList; - TList* collectionNClustersVsTime = new TList; - - TList* collectionTrackQtotPerCluster = new TList; - - TList* collectionTrackQtotPerClusterVsPhi = new TList; - TList* collectionTrackQtotPerClusterVsTheta = new TList; - - TList* collectionTrackMeanQtotPerClusterVsPhi = new TList; - TList* collectionTrackMeanQtotPerClusterVsTheta = new TList; - - TList* collectionMeanNTracksVsTime = new TList; - TList* collectionNEventsVsTime = new TList; - - Int_t count = 0; - while ((obj = iter->Next())) { - - AliTPCClusterHistograms* entry = dynamic_cast (obj); - if (entry == 0) - continue; - - collectionQmaxVsRow ->Add(entry->fhQmaxVsRow ); - collectionQtotVsRow ->Add(entry->fhQtotVsRow ); - - collectionQmaxProfileVsRow ->Add(entry->fhQmaxProfileVsRow ); - collectionQtotProfileVsRow ->Add(entry->fhQtotProfileVsRow ); - - collectionNClustersYVsRow ->Add(entry->fhNClustersYVsRow); - collectionNClustersZVsRow ->Add(entry->fhNClustersZVsRow); - - collectionSigmaYVsRow ->Add(entry->fhSigmaYVsRow ); - collectionSigmaZVsRow ->Add(entry->fhSigmaZVsRow ); - - collectionQmaxProfileYVsRow ->Add(entry->fhQmaxProfileYVsRow ); - collectionQtotProfileYVsRow ->Add(entry->fhQtotProfileYVsRow ); - collectionSigmaYProfileYVsRow->Add(entry->fhSigmaYProfileYVsRow); - collectionSigmaZProfileYVsRow->Add(entry->fhSigmaZProfileYVsRow); - - collectionQmaxProfileZVsRow ->Add(entry->fhQmaxProfileZVsRow ); - collectionQtotProfileZVsRow ->Add(entry->fhQtotProfileZVsRow ); - collectionSigmaYProfileZVsRow->Add(entry->fhSigmaYProfileZVsRow); - collectionSigmaZProfileZVsRow->Add(entry->fhSigmaZProfileZVsRow); - - collectionMeanQtotVsTime ->Add(entry->fhMeanQtotVsTime); - collectionQtotVsTime ->Add(entry->fhQtotVsTime); - - collectionMeanNClustersVsTime->Add(entry->fhMeanNClustersVsTime); - collectionNClustersVsTime ->Add(entry->fhNClustersVsTime); - - collectionTrackQtotPerCluster->Add(entry->fhTrackQtotPerCluster); - - collectionTrackQtotPerClusterVsPhi->Add(entry->fhTrackQtotPerClusterVsPhi); - collectionTrackQtotPerClusterVsTheta->Add(entry->fhTrackQtotPerClusterVsTheta); - - collectionTrackMeanQtotPerClusterVsPhi->Add(entry->fhTrackMeanQtotPerClusterVsPhi); - collectionTrackMeanQtotPerClusterVsTheta->Add(entry->fhTrackMeanQtotPerClusterVsTheta); - - collectionMeanNTracksVsTime->Add(entry->fhMeanNTracksVsTime); - collectionNEventsVsTime->Add(entry->fhNEventsVsTime); - - count++; - } - - fhQmaxVsRow ->Merge(collectionQmaxVsRow ); - fhQtotVsRow ->Merge(collectionQtotVsRow ); - - fhQmaxProfileVsRow ->Merge(collectionQtotProfileVsRow); - fhQtotProfileVsRow ->Merge(collectionQtotProfileVsRow); - - fhNClustersYVsRow ->Merge(collectionNClustersYVsRow); - fhNClustersZVsRow ->Merge(collectionNClustersZVsRow); - - fhSigmaYVsRow ->Merge(collectionSigmaYVsRow ); - fhSigmaZVsRow ->Merge(collectionSigmaZVsRow ); - - fhQmaxProfileYVsRow ->Merge(collectionQmaxProfileYVsRow ); - fhQtotProfileYVsRow ->Merge(collectionQtotProfileYVsRow ); - fhSigmaYProfileYVsRow->Merge(collectionSigmaYProfileYVsRow); - fhSigmaZProfileYVsRow->Merge(collectionSigmaZProfileYVsRow); - - fhQmaxProfileZVsRow ->Merge(collectionQmaxProfileZVsRow ); - fhQtotProfileZVsRow ->Merge(collectionQtotProfileZVsRow ); - fhSigmaYProfileZVsRow->Merge(collectionSigmaYProfileZVsRow); - fhSigmaZProfileZVsRow->Merge(collectionSigmaZProfileZVsRow); - - fhMeanQtotVsTime ->Merge(collectionMeanQtotVsTime); - fhQtotVsTime ->Merge(collectionQtotVsTime); - - fhMeanNClustersVsTime->Merge(collectionMeanNClustersVsTime ); - fhNClustersVsTime ->Merge(collectionNClustersVsTime); - - fhTrackQtotPerCluster->Merge(collectionTrackQtotPerCluster); - - fhTrackQtotPerClusterVsPhi->Merge(collectionTrackQtotPerClusterVsPhi); - fhTrackQtotPerClusterVsTheta->Merge(collectionTrackQtotPerClusterVsTheta); - - fhTrackMeanQtotPerClusterVsPhi->Merge(collectionTrackMeanQtotPerClusterVsPhi); - fhTrackMeanQtotPerClusterVsTheta->Merge(collectionTrackMeanQtotPerClusterVsTheta); - - fhMeanNTracksVsTime->Merge(collectionMeanNTracksVsTime); - fhNEventsVsTime->Merge(collectionNEventsVsTime); - - delete collectionQmaxVsRow; - delete collectionQtotVsRow; - - delete collectionQmaxProfileVsRow; - delete collectionQtotProfileVsRow; - - delete collectionNClustersYVsRow; - delete collectionNClustersZVsRow; - - delete collectionSigmaYVsRow; - delete collectionSigmaZVsRow; - - delete collectionQmaxProfileYVsRow; - delete collectionQtotProfileYVsRow; - delete collectionSigmaYProfileYVsRow; - delete collectionSigmaZProfileYVsRow; - - delete collectionQmaxProfileZVsRow; - delete collectionQtotProfileZVsRow; - delete collectionSigmaYProfileZVsRow; - delete collectionSigmaZProfileZVsRow; - - delete collectionMeanQtotVsTime; - delete collectionQtotVsTime; - - delete collectionMeanNClustersVsTime; - delete collectionNClustersVsTime; - - delete collectionTrackQtotPerCluster; - - delete collectionTrackQtotPerClusterVsPhi; - delete collectionTrackQtotPerClusterVsTheta; - - delete collectionTrackMeanQtotPerClusterVsPhi; - delete collectionTrackMeanQtotPerClusterVsTheta; - - delete collectionMeanNTracksVsTime; - delete collectionNEventsVsTime; - - return count+1; -} - - -//____________________________________________________________________ -void AliTPCClusterHistograms::FillCluster(AliTPCclusterMI* cluster, Int_t time) { - // - // Fills the different histograms with the information from the cluster. - // - - Int_t padRow = cluster->GetRow(); - Float_t qMax = cluster->GetMax(); - Float_t qTot = cluster->GetQ(); - Float_t sigmaY = cluster->GetSigmaY2(); - Float_t sigmaZ = cluster->GetSigmaZ2(); - Float_t y = cluster->GetY(); - Float_t z = cluster->GetZ(); - - // check if this is ok!!! - z = TMath::Abs(z); - - if (qMax<=0) { - printf(Form("\n WARNING: Hi Marian! How can we have Qmax = %f ??? \n \n", qMax)); - } - if (qTot<=0) { - printf(Form("\n WARNING: Hi Marian! How can we have Qtot = %f ??? \n \n ", qTot)); - } - - // check if the cluster is accepted - if (fEdgeSuppression) - if (IsClusterOnEdge(cluster)) - return; - - fNClustersInEvent++; - fQtotInEvent = fQtotInEvent + qTot; - if (qTot > fMaxQtotInEvent) - fMaxQtotInEvent = qTot; - - fhQmaxVsRow ->Fill(padRow, qMax); - fhQtotVsRow ->Fill(padRow, qTot); - - fhQmaxProfileVsRow ->Fill(padRow, qMax); - fhQtotProfileVsRow ->Fill(padRow, qTot); - - fhNClustersYVsRow ->Fill(padRow, y, 1); - fhNClustersZVsRow ->Fill(padRow, z, 1); - - fhSigmaYVsRow ->Fill(padRow, sigmaY); - fhSigmaZVsRow ->Fill(padRow, sigmaZ); - - fhQmaxProfileYVsRow ->Fill(padRow, y, qMax); - fhQtotProfileYVsRow ->Fill(padRow, y, qTot); - fhSigmaYProfileYVsRow ->Fill(padRow, y, sigmaY); - fhSigmaZProfileYVsRow ->Fill(padRow, y, sigmaZ); - - fhQmaxProfileZVsRow ->Fill(padRow, z, qMax); - fhQtotProfileZVsRow ->Fill(padRow, z, qTot); - fhSigmaYProfileZVsRow ->Fill(padRow, z, sigmaY); - fhSigmaZProfileZVsRow ->Fill(padRow, z, sigmaZ); - - if (time>0 && fTimeStart>0 && fTimeStop>0 && time>fTimeStart) { - //Float_t timeFraction = (time - fTimeStart)/(fTimeStop-fTimeStart); - - fhMeanQtotVsTime->Fill(time,qTot); - fhQtotVsTime->Fill(time,qTot); - } -} - -//____________________________________________________________________ -void AliTPCClusterHistograms::FillTrack(const AliTPCseed* seed) { - // - // fill histograms related to tracks - // - - Float_t totalQtot = 0; - Int_t nClusters = 0; - for (Int_t clusterID = 0; clusterID < 160; clusterID++) { - AliTPCclusterMI* cluster = 0; -#ifdef NEWALIROOT - cluster = seed->GetClusterPointer(clusterID); -#endif - if (!cluster) - continue; - - // only use clusters within this detector - if (cluster->GetDetector()!=fDetector) - continue; - - // check if the cluster is accepted - if (fEdgeSuppression) - if (IsClusterOnEdge(cluster)) - return; - - // Int_t padRow = cluster->GetRow(); - //Float_t qMax = cluster->GetMax(); - Float_t qTot = cluster->GetQ(); - - nClusters++; - totalQtot += qTot; - - } - if (nClusters==0) - return; - - Float_t meanQtot = totalQtot/nClusters; - - // azimuthal angle - Float_t phi = TMath::ASin(seed->GetSnp() + seed->GetAlpha()); - // angle with respect to the central membrane - Float_t theta = TMath::ATan(seed->GetTgl()); - - fhTrackQtotPerCluster->Fill(meanQtot); - - fhTrackMeanQtotPerClusterVsPhi->Fill(phi, meanQtot); - fhTrackMeanQtotPerClusterVsTheta->Fill(theta, meanQtot); - - fhTrackQtotPerClusterVsPhi->Fill(phi, meanQtot); - fhTrackQtotPerClusterVsTheta->Fill(theta, meanQtot); -} - -//____________________________________________________________________ -void AliTPCClusterHistograms::FillEvent(Int_t time, Int_t nTracks) { - // - // fill event - // - - fhMeanNTracksVsTime->Fill(time, nTracks); - - // fhNEventsVsTime->Fill(time); -} - - -//____________________________________________________________________ -Bool_t AliTPCClusterHistograms::IsClusterOnEdge(AliTPCclusterMI* clusterMI) { - // - // check if the cluster is on the edge - // - - Int_t padRow = clusterMI->GetRow(); - Float_t y = clusterMI->GetY(); - - Float_t limit = 0; - if (fIsIROC) - { - limit = 12 + padRow * (20.0 - 12.0) / 63; - } - else - limit = 16 + padRow * (36.0 - 16.0) / 96; - - if (TMath::Abs(y) > limit) - return kTRUE; - - return kFALSE; -} - -//____________________________________________________________________ -Float_t AliTPCClusterHistograms::DistanceToEdge(AliTPCclusterMI* clusterMI) { - // - // get the y-distance to closest edge - // - - Int_t detector = clusterMI->GetDetector(); - Int_t padRow = clusterMI->GetRow(); - Float_t y = clusterMI->GetY(); - - Float_t yEdge = -9999; - Float_t d = 0; - - // IROC - if (detector < 36) { - yEdge = 14 + padRow * 0.1333; - - } - else { // OROC - if (padRow<64) // small pads - yEdge = 22.5 + padRow * 0.1746; - else // large pads - yEdge = 34.0 + (padRow-64) * 0.2581; - } - if (y<=0) yEdge = -yEdge; - - d = yEdge - y; - - return d; -} - - -//____________________________________________________________________ -Bool_t AliTPCClusterHistograms::KeepThisEvent(TString& why) { - // - // is this event interesting? - // - // the criteria are ... - // - - if (fKeepEvent) { - why = TString(fWhyKeepEvent); - return kTRUE; - } - - if (fNClustersInEvent>20000) { - why.Append("_moreThan20000clusters"); - fWhyKeepEvent = TString(why); - fKeepEvent = kTRUE; - return kTRUE; - } - - if (fMaxQtotInEvent>10000) { - why.Append("_clusterWithQtot20000plus"); - fWhyKeepEvent = TString(why); - fKeepEvent = kTRUE; - return kTRUE; - } - - if (gRandom->Uniform()<0.001) { - why.Append("_random"); - fWhyKeepEvent = TString(why); - fKeepEvent = kTRUE; - return kTRUE; - } - - return kFALSE; -} - -//____________________________________________________________________ -void AliTPCClusterHistograms::StartEvent() { - // - // reset counters - // - - fNClustersInEvent = 0; - fQtotInEvent = 0; - fMaxQtotInEvent = 0; - fKeepEvent = kFALSE; - fWhyKeepEvent = TString(""); - -} - - -//____________________________________________________________________ -void AliTPCClusterHistograms::FinishEvent(Int_t timeStamp) { - // - // fill histograms related to the event - // - - fhMeanNClustersVsTime->Fill(timeStamp, fNClustersInEvent); - fhNClustersVsTime ->Fill(timeStamp, fNClustersInEvent); - - fhNEventsVsTime->Fill(timeStamp); - -} - - -//____________________________________________________________________ -void AliTPCClusterHistograms::SaveHistograms() -{ - // - // saves the histograms - // - - gDirectory->mkdir(fName.Data()); - gDirectory->cd(fName.Data()); - - fhQmaxVsRow ->Write(); - fhQtotVsRow ->Write(); - - fhQmaxProfileVsRow ->Write(); - fhQtotProfileVsRow ->Write(); - - fhNClustersYVsRow ->Write(); - fhNClustersZVsRow ->Write(); - - fhSigmaYVsRow ->Write(); - fhSigmaZVsRow ->Write(); - - fhQmaxProfileYVsRow ->Write(); - fhQtotProfileYVsRow ->Write(); - fhSigmaYProfileYVsRow ->Write(); - fhSigmaZProfileYVsRow ->Write(); - - fhQmaxProfileZVsRow ->Write(); - fhQtotProfileZVsRow ->Write(); - fhSigmaYProfileZVsRow ->Write(); - fhSigmaZProfileZVsRow ->Write(); - - TNamed* comment = new TNamed("comment", fCommentToHistograms.Data()); - comment->Write(); - - if (fhMeanQtotVsTime->GetEntries()>0) - fhMeanQtotVsTime->Write(); - - if (fhQtotVsTime->GetEntries()>0) - fhQtotVsTime->Write(); - - if (fhMeanNClustersVsTime->GetEntries()>0) - fhMeanNClustersVsTime->Write(); - - if (fhNClustersVsTime->GetEntries()>0) - fhNClustersVsTime->Write(); - - if (fhNEventsVsTime->GetEntries()>0) - fhNEventsVsTime->Write(); - - gDirectory->mkdir("track_hists"); - gDirectory->cd("track_hists"); - - fhTrackQtotPerCluster->Write(); - - fhTrackQtotPerClusterVsPhi->Write(); - fhTrackQtotPerClusterVsTheta->Write(); - - fhTrackMeanQtotPerClusterVsPhi->Write(); - fhTrackMeanQtotPerClusterVsTheta->Write(); - - fhMeanNTracksVsTime->Write(); - - gDirectory->cd("../"); - - gDirectory->cd("../"); - -} - - -//____________________________________________________________________ -TCanvas* AliTPCClusterHistograms::DrawHistograms(const Char_t* opt) { - // - // Draws some histograms and save the canvas as eps and gif file. - // - - TCanvas* c = new TCanvas(fName.Data(), fName.Data(), 1200, 800); - - gStyle->SetOptStat(0); - gStyle->SetOptFit(0); - - gStyle->SetPadLeftMargin(0.1); - - c->Divide(3, 2); - - c->Draw(); - - c->cd(1); - - // this is not really a nice way to do it... - c->GetPad(1)->Delete(); - - TLatex* tName = new TLatex(0.05,0.9,fName.Data()); - tName->SetTextSize(0.02); - tName->DrawClone(); - - TLatex* tEdge; - if (fEdgeSuppression) - tEdge = new TLatex(0.05,0.85,"(edges cut)"); - else - tEdge = new TLatex(0.05,0.85,"(no edge cut)"); - - tEdge->SetTextSize(0.015); - tEdge->DrawClone(); - - tName = new TLatex(0.05,0.7, Form("Run: %s", opt)); - tName->SetTextSize(0.02); - tName->DrawClone(); - - c->cd(2); - fhNClustersYVsRow->Draw("colz"); - - c->cd(3); - fhQtotVsRow->Draw("colz"); - fhQtotProfileVsRow->SetMarkerStyle(3); - fhQtotProfileVsRow->Draw("same"); - - c->cd(4); - fhQtotProfileYVsRow ->Draw("colz"); - - c->cd(5); - fhQtotProfileZVsRow ->Draw("colz"); - - c->cd(6); - fhQtotVsTime->Draw("COLZ"); - fhMeanQtotVsTime->SetMarkerStyle(3); - fhMeanQtotVsTime->Draw("SAME"); - - return c; -} diff --git a/PWG0/TPC/AliTPCClusterHistograms.h b/PWG0/TPC/AliTPCClusterHistograms.h deleted file mode 100644 index 3c177e1a062..00000000000 --- a/PWG0/TPC/AliTPCClusterHistograms.h +++ /dev/null @@ -1,126 +0,0 @@ -#ifndef ALITPCClusterHistograms_H -#define ALITPCClusterHistograms_H - -/* $Id$ */ - -// -// This class contains a number of histograms for diagnostics of a TPC -// read out chamber from the reconstructed clusters. -// - -#include -#include -#include - -class TH3; -class TH2F; -class TH1F; -class TCanvas; -class TProfile; -class TProfile2D; -class TObjArray; - -class AliTPCclusterMI; -class AliTPCseed; - -class AliTPCClusterHistograms : public TNamed -{ -public: - - AliTPCClusterHistograms(); - AliTPCClusterHistograms(Int_t detector, const Char_t* comment="", Int_t timeStart=-1, Int_t timeStop=-1, Bool_t edgeSuppression = kFALSE); - - AliTPCClusterHistograms(const AliTPCClusterHistograms& c); - virtual ~AliTPCClusterHistograms(); - AliTPCClusterHistograms& operator=(const AliTPCClusterHistograms& corrMatrix); - - virtual Long64_t Merge(TCollection* list); - - virtual void SaveHistograms(); - void SetCommentToHistograms(const Char_t* text) {fCommentToHistograms = TString(text);} - - void FillEvent(Int_t time, Int_t nTracks); - void FillTrack(const AliTPCseed* seed); - void FillCluster(AliTPCclusterMI* clusterMI, Int_t time=-1); - - void StartEvent(); - void FinishEvent(Int_t timeStamp); - - Int_t GetNClusters() {return fNClustersInEvent;} - Float_t GetQtotInEvent() {return fQtotInEvent;} - Float_t GetMaxQtotInEvent() {return fMaxQtotInEvent;} - - Bool_t KeepThisEvent(TString& why); - const Char_t* WhyKeepEvent() {return fWhyKeepEvent.Data();} - - Bool_t IsClusterOnEdge(AliTPCclusterMI* clusterMI); - Float_t DistanceToEdge(AliTPCclusterMI* clusterMI); - - TCanvas* DrawHistograms(const Char_t* opt=""); - - static TString FormDetectorName(Int_t detector, Bool_t edgeSuppression = kFALSE, const char* comment = 0); - -protected: - - Int_t fTimeStart; // begin time of run(s) - Int_t fTimeStop; // end time of runs(s) - - TH2F* fhQmaxVsRow; // QmaxVsRow - TH2F* fhQtotVsRow; // QtotVsRow - - TProfile* fhQtotProfileVsRow; // QtotProfileVsRow - TProfile* fhQmaxProfileVsRow; // QmaxProfileVsRow - - TH2F* fhQtotVsDistanceToEdge; // qtot vs distance to edge - TProfile* fhQtotProfileVsDistanceToEdge; // qtot vs distance to edge - - TH2F* fhNClustersYVsRow; // n clusters y vs row - TH2F* fhNClustersZVsRow; // n clusters z vs row - - TH2F* fhSigmaYVsRow; // SigmaYVsRow - TH2F* fhSigmaZVsRow; // SigmaZVsRow - - TProfile2D* fhQmaxProfileYVsRow; // QmaxProfileYVsRow - TProfile2D* fhQtotProfileYVsRow; // QtotProfileYVsRow - TProfile2D* fhSigmaYProfileYVsRow; // SigmaYProfileYVsRow - TProfile2D* fhSigmaZProfileYVsRow; // SigmaZProfileYVsRow - - TProfile2D* fhQmaxProfileZVsRow; // QmaxProfileZVsRow - TProfile2D* fhQtotProfileZVsRow; // QtotProfileZVsRow - TProfile2D* fhSigmaYProfileZVsRow; // SigmaYProfileZVsRow - TProfile2D* fhSigmaZProfileZVsRow; // SigmaZProfileZVsRow - - TProfile* fhMeanQtotVsTime; // mean qtot vs time - TH2F* fhQtotVsTime; // qtot vs time - TProfile* fhMeanNClustersVsTime; // mean number of clusters vs time - TH2F* fhNClustersVsTime; // number of clusters vs time - - TH1F* fhTrackQtotPerCluster; // TrackQtotPerCluster - - TH2F* fhTrackQtotPerClusterVsPhi; // TrackQtotPerClusterVsPhi - TH2F* fhTrackQtotPerClusterVsTheta; // TrackQtotPerClusterVsTheta - - TProfile* fhTrackMeanQtotPerClusterVsPhi; // TrackMeanQtotPerClusterVsPhi - TProfile* fhTrackMeanQtotPerClusterVsTheta; // TrackMeanQtotPerClusterVsTheta - - TProfile* fhMeanNTracksVsTime; // mean number of tracks vs time - TH1F* fhNEventsVsTime; // number of events vs time - - Int_t fDetector; // number of detector - Bool_t fIsIROC; // true = IROC, false = OROC - Bool_t fEdgeSuppression; // if set edges are not taken into account for histograms - - Int_t fNClustersInEvent; // number of clusters in event - Float_t fQtotInEvent; // total qtot in event - Float_t fMaxQtotInEvent; // max qtot in event - - Bool_t fKeepEvent; // keep this event - TString fWhyKeepEvent; // why - - TString fCommentToHistograms; // comments to histograms - - ClassDef(AliTPCClusterHistograms,1) -}; - -#endif - diff --git a/PWG0/TPC/AliTPCRawHistograms.cxx b/PWG0/TPC/AliTPCRawHistograms.cxx deleted file mode 100644 index 02b0a85de7e..00000000000 --- a/PWG0/TPC/AliTPCRawHistograms.cxx +++ /dev/null @@ -1,317 +0,0 @@ -/************************************************************************** - * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * - * * - * Author: The ALICE Off-line Project. * - * Contributors are mentioned in the code where appropriate. * - * * - * Permission to use, copy, modify and distribute this software and its * - * documentation strictly for non-commercial purposes is hereby granted * - * without fee, provided that the above copyright notice appears in all * - * copies and that both the copyright notice and this permission notice * - * appear in the supporting documentation. The authors make no claims * - * about the suitability of this software for any purpose. It is * - * provided "as is" without express or implied warranty. * - **************************************************************************/ - -/* $Id$ */ - -// This class contains a number of histograms for diagnostics of a TPC -// read out chamber from the raw data -// -// TODO: -// -// -// - - -#include -#include -#include -#include -#include -#include -#include -#include - -#include "AliLog.h" -#include "AliTPCRawHistograms.h" -#include "AliTPCRawStream.h" - -//____________________________________________________________________ -ClassImp(AliTPCRawHistograms) - -//____________________________________________________________________ -AliTPCRawHistograms::AliTPCRawHistograms() - : TNamed(), - fTimeStart(0), - fTimeStop(0), - fhDigits(0), - fhSignal(0), - fDigitTree(0) -{ - // default constructor -} - -//____________________________________________________________________ -AliTPCRawHistograms::AliTPCRawHistograms(Int_t detector, const Char_t* /* comment */, Int_t timeStart, Int_t timeStop) - : TNamed(), - fTimeStart(timeStart), - fTimeStop(timeStop), - fhDigits(0), - fhSignal(new TH1F("fhSignal", "fhSignal", 200, 0, 2000)), - fDigitTree(new TNtuple("fDigitTree", "fDigitTree", "row:pad:time:signal")) -{ - // constructor - - // make name and title - if (detector < 0 || detector >= 72) { - AliDebug(AliLog::kError, Form("Detector %d does not exist", detector)); - return; - } - - Int_t sector = detector%18; - TString side; - TString inout; - if (detector<18 || ( detector>=36 && detector<54)) - side.Form("A"); - else - side.Form("B"); - - if (detector<36) - inout.Form("IROC"); - else - inout.Form("OROC"); - - TString name; - name.Form("sector_%s%d_%s", side.Data(), sector, inout.Data()); - - SetName(name); - SetTitle(Form("%s (detector %d)",name.Data(), detector)); - - Float_t yRange = 45; - Int_t nPadRows = 96; - - if (TString(name).Contains("IROC")) { - yRange = 25; - nPadRows = 63; - } - - // do not add this hists to the directory - Bool_t oldStatus = TH1::AddDirectoryStatus(); - TH1::AddDirectory(kFALSE); - - fhDigits = new TH3F("fhDigits", Form("signal distribution;row;pad;time", name.Data()), nPadRows, -0.5, -0.5 + nPadRows, 150, -0.5, 149.5, 100, 0, 1200); - - TH1::AddDirectory(oldStatus); -} - -//____________________________________________________________________ -AliTPCRawHistograms::AliTPCRawHistograms(const AliTPCRawHistograms& c) : TNamed(c), - fTimeStart(0), - fTimeStop(0), - fhDigits(0), - fhSignal(0), - fDigitTree(0) -{ - // copy constructor - - ((AliTPCRawHistograms &)c).Copy(*this); -} - -//____________________________________________________________________ -AliTPCRawHistograms::~AliTPCRawHistograms() -{ - // - // destructor - // - -} - -//____________________________________________________________________ -AliTPCRawHistograms &AliTPCRawHistograms::operator=(const AliTPCRawHistograms &c) -{ - // assigment operator - - if (this != &c) - ((AliTPCRawHistograms &) c).Copy(*this); - - return *this; -} - - -//____________________________________________________________________ -Long64_t AliTPCRawHistograms::Merge(TCollection* list) -{ - // Merge a list of AliTPCRawHistograms objects with this (needed for - // PROOF). - // Returns the number of merged objects (including this). - - if (!list) - return 0; - - if (list->IsEmpty()) - return 1; - - // TIterator* iter = list->MakeIterator(); - // TObject* obj; - - Int_t count = 0; - -/* - // collections of measured and generated histograms - TList* collectionQmaxVsRow = new TList; - TList* collectionQtotVsRow = new TList; - TList* collectionSigmaYVsRow = new TList; - TList* collectionSigmaZVsRow = new TList; - - TList* collectionQmaxProfileYVsRow = new TList; - TList* collectionQtotProfileYVsRow = new TList; - TList* collectionSigmaYProfileYVsRow = new TList; - TList* collectionSigmaZProfileYVsRow = new TList; - - TList* collectionQmaxProfileZVsRow = new TList; - TList* collectionQtotProfileZVsRow = new TList; - TList* collectionSigmaYProfileZVsRow = new TList; - TList* collectionSigmaZProfileZVsRow = new TList; - - TList* collectionQtotVsTime = new TList; - TList* collectionQmaxVsTime = new TList; - - while ((obj = iter->Next())) { - - AliTPCRawHistograms* entry = dynamic_cast (obj); - if (entry == 0) - continue; - - collectionQmaxVsRow ->Add(entry->fhQmaxVsRow ); - collectionQtotVsRow ->Add(entry->fhQtotVsRow ); - collectionSigmaYVsRow ->Add(entry->fhSigmaYVsRow ); - collectionSigmaZVsRow ->Add(entry->fhSigmaZVsRow ); - - collectionQmaxProfileYVsRow ->Add(entry->fhQmaxProfileYVsRow ); - collectionQtotProfileYVsRow ->Add(entry->fhQtotProfileYVsRow ); - collectionSigmaYProfileYVsRow->Add(entry->fhSigmaYProfileYVsRow); - collectionSigmaZProfileYVsRow->Add(entry->fhSigmaZProfileYVsRow); - - collectionQmaxProfileZVsRow ->Add(entry->fhQmaxProfileZVsRow ); - collectionQtotProfileZVsRow ->Add(entry->fhQtotProfileZVsRow ); - collectionSigmaYProfileZVsRow->Add(entry->fhSigmaYProfileZVsRow); - collectionSigmaZProfileZVsRow->Add(entry->fhSigmaZProfileZVsRow); - - collectionQtotVsTime->Add(entry->fhQtotVsTime); - collectionQmaxVsTime->Add(entry->fhQmaxVsTime); - - - count++; - } - - fhQmaxVsRow ->Merge(collectionQmaxVsRow ); - fhQtotVsRow ->Merge(collectionQtotVsRow ); - fhSigmaYVsRow ->Merge(collectionSigmaYVsRow ); - fhSigmaZVsRow ->Merge(collectionSigmaZVsRow ); - - fhQmaxProfileYVsRow ->Merge(collectionQmaxProfileYVsRow ); - fhQtotProfileYVsRow ->Merge(collectionQtotProfileYVsRow ); - fhSigmaYProfileYVsRow->Merge(collectionSigmaYProfileYVsRow); - fhSigmaZProfileYVsRow->Merge(collectionSigmaZProfileYVsRow); - - fhQmaxProfileZVsRow ->Merge(collectionQmaxProfileZVsRow ); - fhQtotProfileZVsRow ->Merge(collectionQtotProfileZVsRow ); - fhSigmaYProfileZVsRow->Merge(collectionSigmaYProfileZVsRow); - fhSigmaZProfileZVsRow->Merge(collectionSigmaZProfileZVsRow); - - fhQtotVsTime->Merge(collectionQtotVsTime); - fhQmaxVsTime->Merge(collectionQmaxVsTime); - - delete collectionQmaxVsRow; - delete collectionQtotVsRow; - delete collectionSigmaYVsRow; - delete collectionSigmaZVsRow; - - delete collectionQmaxProfileYVsRow; - delete collectionQtotProfileYVsRow; - delete collectionSigmaYProfileYVsRow; - delete collectionSigmaZProfileYVsRow; - - delete collectionQmaxProfileZVsRow; - delete collectionQtotProfileZVsRow; - delete collectionSigmaYProfileZVsRow; - delete collectionSigmaZProfileZVsRow; - - delete collectionQtotVsTime; - delete collectionQmaxVsTime;*/ - - return count+1; -} - -//____________________________________________________________________ -void AliTPCRawHistograms::FillDigit(AliTPCRawStream* rawStream, Int_t /*time*/) -{ - // - // Fills the different histograms with the information from a raw digit - // - - Int_t signal = rawStream->GetSignal(); - Int_t row = rawStream->GetRow(); - Int_t pad = rawStream->GetPad(); - Int_t timeBin = rawStream->GetTime(); - - if (signal > 120) - fhDigits->Fill(row, pad, timeBin, signal); - - fhSignal->Fill(signal); - - fDigitTree->Fill(row, pad, timeBin, signal); -} - -//____________________________________________________________________ -void AliTPCRawHistograms::SaveHistograms() -{ - // - // saves the histograms - // - - gDirectory->mkdir(fName.Data()); - gDirectory->cd(fName.Data()); - - fhDigits ->Write(); - fhSignal ->Write(); - fDigitTree->Write(); - - gDirectory->cd("../"); -} - -//____________________________________________________________________ -TCanvas* AliTPCRawHistograms::DrawHistograms(const Char_t* /*opt*/) { - // - // Draws some histograms and save the canvas as eps and gif file. - // - - TCanvas* c = new TCanvas(Form("plots_%s",fName.Data()), fName.Data(), 1200, 1000); - - gStyle->SetOptStat(0); - gStyle->SetOptFit(0); - - gStyle->SetPadLeftMargin(0.05); - - c->Divide(3,3); - - c->Draw(); - - c->cd(1); - - // this is not really a nice way to do it... - c->GetPad(1)->Delete(); - - TLatex* name = new TLatex(0.1,0.8,fName.Data()); - name->SetTextSize(0.02); - name->DrawClone(); - - c->cd(2); - fhDigits->Draw(); - - c->cd(3); - fhSignal->Draw(); - - return c; -} diff --git a/PWG0/TPC/AliTPCRawHistograms.h b/PWG0/TPC/AliTPCRawHistograms.h deleted file mode 100644 index f4208c350fa..00000000000 --- a/PWG0/TPC/AliTPCRawHistograms.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef AliTPCRawHistograms_H -#define AliTPCRawHistograms_H - -/* $Id$ */ - -// -// This class contains a number of histograms for diagnostics of a TPC -// read out chamber from the raw data -// - -#include - -class TH3F; -class TH1F; -class TCanvas; -class TTree; -class TNtuple; - -class AliTPCRawStream; - -class AliTPCRawHistograms : public TNamed -{ -public: - AliTPCRawHistograms(); - AliTPCRawHistograms(Int_t detector, const Char_t* comment="", Int_t timeStart=-1, Int_t timeStop=-1); - - AliTPCRawHistograms(const AliTPCRawHistograms& c); - virtual ~AliTPCRawHistograms(); - AliTPCRawHistograms& operator=(const AliTPCRawHistograms& corrMatrix); - - virtual Long64_t Merge(TCollection* list); - - virtual void SaveHistograms(); - - void FillDigit(AliTPCRawStream* rawStream, Int_t time=-1); - - TCanvas* DrawHistograms(const Char_t* opt=""); - -protected: - Int_t fTimeStart; // begin time of run(s) - Int_t fTimeStop; // end time of runs(s) - - TH3F* fhDigits; // cluster of all digits above threshold - TH1F* fhSignal; // signal distribution - - TNtuple* fDigitTree; // row:pad:time:signal - - ClassDef(AliTPCRawHistograms,1) -}; - -#endif - diff --git a/PWG0/TPC/runROCClusterAnalysis.C b/PWG0/TPC/runROCClusterAnalysis.C deleted file mode 100644 index 0ec24481e02..00000000000 --- a/PWG0/TPC/runROCClusterAnalysis.C +++ /dev/null @@ -1,42 +0,0 @@ -/* $Id$ */ - -// -// -// - -#include "../CreateESDChain.C" -#include "../PWG0Helper.C" - -void runROCClusterAnalysis(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t runNumber=0, Bool_t aProof = kFALSE, - const char* option = "", const char* proofServer = "jgrosseo@lxb6046") -{ - if (aProof) - connectProof(proofServer); - - TString libraries("libEG;libGeom;libESD;libPWG0base;libPWG0dep"); - TString packages("PWG0base;PWG0dep"); - - if (!prepareQuery(libraries, packages, 2)) - return; - - TChain* chain = CreateESDChain(data, nRuns, offset, kTRUE, kTRUE); - - TList inputList; - - // TNamed* comment = new TNamed("comment",runStr.Data()); - if (runNumber!=0) - inputList.Add(new TNamed("comment",Form("%d",runNumber))); - - TString selectorName = "AliROCClusterAnalysisSelector"; - AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo); - - if (aDebug != kFALSE) - { - AliLog::SetClassDebugLevel(selectorName, AliLog::kDebug); - selectorName += ".cxx++g"; - } - else - selectorName += ".cxx+"; - - Int_t result = executeQuery(chain, &inputList, selectorName, option); -} diff --git a/PWG0/TPC/runROCESDAnalysis.C b/PWG0/TPC/runROCESDAnalysis.C deleted file mode 100644 index 035dd218d6a..00000000000 --- a/PWG0/TPC/runROCESDAnalysis.C +++ /dev/null @@ -1,42 +0,0 @@ -/* $Id$ */ - -// -// -// - -#include "../CreateESDChain.C" -#include "../PWG0Helper.C" - -void runROCESDAnalysis(Char_t* data, Int_t nRuns=20, Int_t offset=0, Bool_t aDebug = kFALSE, Int_t runNumber=0, Bool_t aProof = kFALSE, - const char* option = "", const char* proofServer = "jgrosseo@lxb6046") -{ - if (aProof) - connectProof(proofServer); - - TString libraries("libEG;libGeom;libESD;libPWG0base;libPWG0dep"); - TString packages("PWG0base;PWG0dep"); - - if (!prepareQuery(libraries, packages, 2)) - return; - - TChain* chain = CreateESDChain(data, nRuns, offset, kTRUE, kTRUE); - - TList inputList; - - // TNamed* comment = new TNamed("comment",runStr.Data()); - if (runNumber!=0) - inputList.Add(new TNamed("comment",Form("%d",runNumber))); - - TString selectorName = "AliROCESDAnalysisSelector"; - AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo); - - if (aDebug != kFALSE) - { - AliLog::SetClassDebugLevel(selectorName, AliLog::kDebug); - selectorName += ".cxx++g"; - } - else - selectorName += ".cxx+"; - - Int_t result = executeQuery(chain, &inputList, selectorName, option); -} diff --git a/PWG0/TPC/runROCRawAnalysis.C b/PWG0/TPC/runROCRawAnalysis.C deleted file mode 100644 index a4e9aec063b..00000000000 --- a/PWG0/TPC/runROCRawAnalysis.C +++ /dev/null @@ -1,40 +0,0 @@ -/* $Id$ */ - -// -// -// - -#include "../CreateESDChain.C" -#include "../PWG0Helper.C" - -void runROCRawAnalysis(Char_t* dataDir, Int_t nRuns=20, Int_t offset=0, Long64_t entries = TChain::kBigNumber, Bool_t aDebug = kFALSE, Bool_t aProof = kFALSE, - const char* option = "", const char* proofServer = "jgrosseo@lxb6046") -{ - if (aProof) - connectProof(proofServer); - - TString libraries("libEG;libGeom;libPWG0base;libPWG0dep"); - TString packages; - - if (!prepareQuery(libraries, packages, 2)) - return; - - TChain* chain = CreateChain("RAW", dataDir, nRuns, offset); - - cout << "Entries in chain " << chain->GetEntries() << endl; - - TList inputList; - - TString selectorName = "AliROCRawAnalysisSelector"; - AliLog::SetClassDebugLevel(selectorName, AliLog::kInfo); - - if (aDebug != kFALSE) - { - AliLog::SetClassDebugLevel(selectorName, AliLog::kDebug); - selectorName += ".cxx+g"; - } - else - selectorName += ".cxx+"; - - Int_t result = executeQuery(chain, &inputList, selectorName, option, entries); -} diff --git a/PWG0/libPWG0dep.pkg b/PWG0/libPWG0dep.pkg index feb3ffbbccc..3897d1263e3 100644 --- a/PWG0/libPWG0dep.pkg +++ b/PWG0/libPWG0dep.pkg @@ -4,9 +4,7 @@ # this library contains classed that depend on STEER -SRCS = TPC/AliTPCClusterHistograms.cxx \ - TPC/AliTPCRawHistograms.cxx \ - dNdPt/AlidNdPtHelper.cxx \ +SRCS = dNdPt/AlidNdPtHelper.cxx \ dNdPt/AlidNdPtAnalysis.cxx \ dNdPt/AlidNdPtCorrection.cxx \ dNdPt/AlidNdPtAcceptanceCuts.cxx \ @@ -20,7 +18,7 @@ HDRS = $(SRCS:.cxx=.h) DHDR= PWG0depLinkDef.h -EINCLUDE= TPC PWG0/TPC +EINCLUDE= TPC ifeq (win32gcc,$(ALICE_TARGET)) PACKSOFLAGS:= $(SOFLAGS) -L$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET) -lSTEERBase diff --git a/PWG0/libPWG0selectors.pkg b/PWG0/libPWG0selectors.pkg index 75fda9a5573..0bbeb3e5686 100644 --- a/PWG0/libPWG0selectors.pkg +++ b/PWG0/libPWG0selectors.pkg @@ -7,9 +7,6 @@ SRCS = dNdEta/AlidNdEtaTask.cxx \ dNdEta/AlidNdEtaCorrectionTask.cxx \ - TPC/AliROCESDAnalysisSelector.cxx \ - TPC/AliROCRawAnalysisSelector.cxx \ - TPC/AliROCClusterAnalysisSelector.cxx \ highMultiplicity/AliHighMultiplicitySelector.cxx \ multiplicity/AliMultiplicityTask.cxx \ esdTrackCuts/AliCutTask.cxx \ @@ -21,7 +18,7 @@ HDRS = $(SRCS:.cxx=.h) DHDR= PWG0selectorsLinkDef.h -EINCLUDE= TPC RAW ITS PWG0/dNdEta PWG0/TPC PWG0/highMultiplicity PWG0/multiplicity PWG0/esdTrackCuts PWG0/trigger PWG0/dNdPt PWG0/eventStats ANALYSIS +EINCLUDE= TPC RAW ITS PWG0/dNdEta PWG0/highMultiplicity PWG0/multiplicity PWG0/esdTrackCuts PWG0/trigger PWG0/dNdPt PWG0/eventStats ANALYSIS ifeq (win32gcc,$(ALICE_TARGET)) PACKSOFLAGS:= $(SOFLAGS) -L$(ALICE_ROOT)/lib/tgt_$(ALICE_TARGET) -lSTEERBase \