Common Analysis Framework » QFRAMEWORK » TQUniqueCut

class TQUniqueCut: public TQCut


 TQUniqueCut:

 This class is a special version of the TQCompiledCut.
 The intention of this class is to provide functionality to remove
 overlap between a set of samples.

 This cut is most sensibly used as the root of a hierarchy of TQCompiledCuts.
 As such, it will take care that every event will only be considered once.
 All RunNumbers and EventNumbers are stored and compared with to achieve this,
 any events recognized as duplicates will be rejected.
 Please note that this procedure is very demanding in terms of CPU and RAM,
 and might easily lead to severe problems when analysing large sample sets.

 In such cases, please consider removing the overlap on nTuple code level.


Function Members (Methods)

public:
virtual~TQUniqueCut()
voidTObject::AbstractMethod(const char* method) const
boolTQCut::addAnalysisJob(TQAnalysisJob* newJob_, const TString& cuts_ = "")
TQCut*TQCut::addAndReturnCut(const TString& definition_)
boolTQCut::addCut(const TString& definition_)
boolTQCut::addCut(TQCut* cut)
boolTQCut::addCut(TQCut* cut, const TString& baseCutName)
voidTQCut::analyse(double weight, bool useWeights)
virtual voidTObject::AppendPad(Option_t* option = "")
virtual voidTObject::Browse(TBrowser* b)
boolTQCut::canFinalize(TQSampleFolder* sf) const
boolTQCut::canInitialize(TQSampleFolder* sf) const
ULong_tTObject::CheckedHash()
static boolcheckUnique(set<long>& entries, long newEntry)
static TClass*Class()
virtual const char*TObject::ClassName() const
voidclear()
virtual voidTNamed::Clear(Option_t* option = "")
voidTQCut::clearAnalysisJobs()
virtual TObject*TNamed::Clone(const char* newname = "") const
virtual intTQCut::Compare(const TObject* obj) const
voidTQCut::consolidate()
virtual voidTNamed::Copy(TObject& named) const
static TQCut*TQCut::createCut(const TString& definition_)
static TQCut*TQCut::createCut(const TString& name, const TString& cutExpr, const TString& weightExpr = "")
virtual voidTObject::Delete(Option_t* option = "")MENU
virtual Int_tTObject::DistancetoPrimitive(Int_t px, Int_t py)
virtual voidTObject::Draw(Option_t* option = "")
virtual voidTObject::DrawClass() constMENU
virtual TObject*TObject::DrawClone(Option_t* option = "") constMENU
virtual voidTObject::Dump() constMENU
intTQCut::dumpToFolder(TQFolder* folder)
virtual voidTObject::Error(const char* method, const char* msgfmt,...) const
virtual voidTObject::Execute(const char* method, const char* params, Int_t* error = 0)
virtual voidTObject::Execute(TMethod* method, TObjArray* params, Int_t* error = 0)
boolTQCut::executeAnalysisJobs(double weight)
virtual voidTObject::ExecuteEvent(Int_t event, Int_t px, Int_t py)
TList*TQCut::exportDefinitions(bool terminatingColon = false)
virtual voidTObject::Fatal(const char* method, const char* msgfmt,...) const
virtual voidTNamed::FillBuffer(char*& buffer)
virtual boolTQCut::finalize()
boolTQCut::finalizeSampleFolder(TQSampleFolder* sf)
virtual TObject*TObject::FindObject(const char* name) const
virtual TObject*TObject::FindObject(const TObject* obj) const
TStringTQCut::getActiveCutExpression() const
TStringTQCut::getActiveWeightExpression() const
TQCut*TQCut::getBase()
const TQCut*TQCut::getBaseConst() const
TQCut*TQCut::getClone()
TQCut*TQCut::getCompiledClone(TQTaggable* tags)
TStringTQCut::getCompiledCutExpression(TQTaggable* tags)
TStringTQCut::getCompiledWeightExpression(TQTaggable* tags)
TQCut*TQCut::getCut(const TString& name)
const TString&TQCut::getCutExpression() const
vector<TString>TQCut::getCutNames(const TString& cutName)
TQObservable*TQCut::getCutObservable()
TObjArray*TQCut::getCuts()
intTQCut::getDepth() const
virtual Option_t*TObject::GetDrawOption() const
static Longptr_tTObject::GetDtorOnly()
const TString&getEventNumberExpression() const
TStringTQCut::getGlobalCutExpression(TQTaggable* tags = __null)
virtual doubleTQCut::getGlobalWeight() const
TStringTQCut::getGlobalWeightExpression(TQTaggable* tags = __null)
virtual const char*TObject::GetIconName() const
static longgetIndex(vector<long>& entries, long entry)
const vector<TQSampleFolder*>&TQCut::getInitializationHistory() const
TObjArray*TQCut::getJobs()
virtual TObjArray*TQCut::getListOfBranches()
TObjArray*TQCut::getListOfCuts()
voidTQCut::getMatchingCuts(TObjArray& matchingCuts, const TString& name)
voidTQCut::getMatchingCuts(TObjArray& matchingCuts, const TObjArray& name_sep, int offset = 0)
virtual const char*TNamed::GetName() const
intTQCut::getNAnalysisJobs()
TStringTQCut::getNodeName()
virtual char*TObject::GetObjectInfo(Int_t px, Int_t py) const
static Bool_tTObject::GetObjectStat()
virtual Option_t*TObject::GetOption() const
TStringTQCut::getPath()
boolTQCut::getPrintResults() const
TQCut*TQCut::getRoot()
const TString&getRunNumberExpression() const
TQSample*TQCut::getSample()
TQCut*TQCut::getSingleCut(TString name, TString excl_pattern = "PATTERNYOUWON'TSEE")
boolTQCut::getSkipAnalysisJobsGlobal() const
virtual const char*TNamed::GetTitle() const
virtual UInt_tTObject::GetUniqueID() const
virtual doubleTQCut::getWeight(bool doPrint = false) const
const TString&TQCut::getWeightExpression() const
TQObservable*TQCut::getWeightObservable()
intTQCut::getWidth() const
virtual Bool_tTObject::HandleTimer(TTimer* timer)
virtual ULong_tTNamed::Hash() const
Bool_tTObject::HasInconsistentHash() const
static TQCut*TQCut::importFromFolder(TQFolder* folder, TQTaggable* tags = __null)
boolTQCut::includeBase()
virtual voidTObject::Info(const char* method, const char* msgfmt,...) const
virtual Bool_tTObject::InheritsFrom(const char* classname) const
virtual Bool_tTObject::InheritsFrom(const TClass* cl) const
virtual boolTQCut::initialize(TQSample* sample)
boolTQCut::initializeSampleFolder(TQSampleFolder* sf)
virtual voidTObject::Inspect() constMENU
voidTObject::InvertBit(UInt_t f)
virtual TClass*IsA() const
boolTQCut::isDescendantOf(TString cutName)
Bool_tTObject::IsDestructed() const
virtual Bool_tTObject::IsEqual(const TObject* obj) const
virtual Bool_tTObject::IsFolder() const
virtual boolisMergeable() const
Bool_tTObject::IsOnHeap() const
boolTQCut::isResidualMatchingSegmentOptional(const TObjArray& name_segments, int offset = 0)
virtual Bool_tTNamed::IsSortable() const
static boolTQCut::isTrivialFalse(const TString& expr)
static boolTQCut::isTrivialTrue(const TString& expr)
static boolTQCut::isValidName(const TString& name_)
Bool_tTObject::IsZombie() const
virtual voidTNamed::ls(Option_t* option = "") const
voidTObject::MayNotUse(const char* method) const
virtual Bool_tTObject::Notify()
voidTObject::Obsolete(const char* method, const char* asOfVers, const char* removedFromVers) const
voidTObject::operator delete(void* ptr)
voidTObject::operator delete(void* ptr, void* vp)
voidTObject::operator delete[](void* ptr)
voidTObject::operator delete[](void* ptr, void* vp)
void*TObject::operator new(size_t sz)
void*TObject::operator new(size_t sz, void* vp)
void*TObject::operator new[](size_t sz)
void*TObject::operator new[](size_t sz, void* vp)
TQUniqueCut&operator=(const TQUniqueCut&)
TQUniqueCut&operator=(TQUniqueCut&&)
virtual voidTObject::Paint(Option_t* option = "")
static boolTQCut::parseCutDefinition(const TString& definition_, TString* name_, TString* baseCutName_, TString* cutExpr_, TString* weightExpr_)
static boolTQCut::parseCutDefinition(TString definition_, TString& name_, TString& baseCutName_, TString& cutExpr_, TString& weightExpr_)
virtual boolpassed(bool doPrint) const
virtual boolTQCut::passedGlobally() const
virtual voidTObject::Pop()
voidTQCut::print(const TString& options = "r")
virtual voidTNamed::Print(Option_t* option = "") const
voidTQCut::printActiveCutExpression(size_t indent = 0) const
voidTQCut::printAnalysisJobs(const TString& options = "")
voidTQCut::printCut(const TString& options = "r")
voidTQCut::printCuts(const TString& options = "r")
boolTQCut::printDiagram(TQTaggable& options)
boolTQCut::printDiagram(const TString& options)
voidTQCut::printEvaluation() const
voidTQCut::printEvaluation(Long64_t iEvent) const
voidprintLists() const
voidTQCut::printWeightComponents() const
voidTQCut::printWeightComponents(Long64_t iEvent) const
voidTQCut::propagateMatchingCuts(TObjArray& matchingCuts, const TObjArray& name_sep, int offset = 0)
virtual Int_tTObject::Read(const char* name)
virtual voidTObject::RecursiveRemove(TObject* obj)
boolTQCut::removeCut(const TString& name)
voidTObject::ResetBit(UInt_t f)
virtual voidTObject::SaveAs(const char* filename = "", Option_t* option = "") constMENU
virtual voidTObject::SavePrimitive(ostream& out, Option_t* option = "")
voidsetActive(bool active)
voidTObject::SetBit(UInt_t f)
voidTObject::SetBit(UInt_t f, Bool_t set)
boolsetBranchNames(const TString& runBranch, const TString& evtBranch)
voidTQCut::setCutExpression(const TString& cutExpression)
voidTQCut::setCuts(TObjArray* cuts)
virtual voidTObject::SetDrawOption(Option_t* option = "")MENU
static voidTObject::SetDtorOnly(void* obj)
virtual voidTNamed::SetName(const char* name)MENU
virtual voidTNamed::SetNameTitle(const char* name, const char* title)
static voidTObject::SetObjectStat(Bool_t stat)
voidTQCut::setPrintResults(int maxCount = 0)
voidTQCut::setSkipAnalysisJobsGlobal(bool skip = true)
virtual voidTNamed::SetTitle(const char* title = "")MENU
virtual voidTObject::SetUniqueID(UInt_t uid)
voidTQCut::setWeightExpression(const TString& weightExpression)
virtual voidShowMembers(TMemberInspector& insp) const
virtual Int_tTNamed::Sizeof() const
voidTQCut::sort()
virtual voidStreamer(TBuffer&)
voidStreamerNVirtual(TBuffer& ClassDef_StreamerNVirtual_b)
virtual voidTObject::SysError(const char* method, const char* msgfmt,...) const
Bool_tTObject::TestBit(UInt_t f) const
Int_tTObject::TestBits(UInt_t f) const
TQUniqueCut()
TQUniqueCut(const TString& name)
TQUniqueCut(const TQUniqueCut&)
TQUniqueCut(TQUniqueCut&&)
TQUniqueCut(const TString& runBranch, const TString& evtBranch)
TQUniqueCut(const TString& name, const TString& runBranch, const TString& evtBranch)
virtual voidTObject::UseCurrentStyle()
virtual voidTObject::Warning(const char* method, const char* msgfmt,...) const
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0)
virtual Int_tTObject::Write(const char* name = 0, Int_t option = 0, Int_t bufsize = 0) const
static voidTQCut::writeDiagramFooter(ostream& os, TQTaggable& tags)
static voidTQCut::writeDiagramHeader(ostream& os, TQTaggable& tags)
intTQCut::writeDiagramText(ostream& os, TQTaggable& tags, TString pos = "")
boolTQCut::writeDiagramToFile(const TString& filename, const TString& options = "")
boolTQCut::writeDiagramToFile(const TString& filename, TQTaggable& tags)
TStringTQCut::writeDiagramToString(TQTaggable& tags)
protected:
voidTQCut::analyseVariants(const TQCut::VariantResults* preceedingResults, bool useWeights, double baseWeight = 1.)
static TQCut*TQCut::createFromFolderInternal(TQFolder* folder, TQTaggable* tags)
intTQCut::createVariantFolders(TQSampleFolder* sf, const TQCut::VariantDefinitionList* variantDefs)
TQCut::VariantStackElement*TQCut::createVariantLayer(const vector<TQCut::VariantHandle>& preceedingHandles, TQSampleFolder* nextSF, const TQCut::VariantDefinitionList* variantDefs)
boolTQCut::createVariants(TQSampleFolder* nextSF, const TQCut::VariantDefinitionList* variantDefs)
virtual voidTObject::DoError(int level, const char* location, const char* fmt, va_list va) const
virtual boolfinalizeObservables()
virtual boolfinalizeSelfSampleFolder(TQSampleFolder* sf)
boolTQCut::finalizeVariants()
boolTQCut::finalizeVariantsSampleFolder(TQSampleFolder* sf)
virtual TObjArray*getOwnBranches()
voidTQCut::importFromFolderInternal(TQFolder* folder, TQTaggable* tags)
boolTQCut::initialize(TQSample* sample, const TQCut::VariantDefinitionList* variantDefs)
virtual boolinitializeObservables()
boolTQCut::initializeSampleFolder(TQSampleFolder* sf, const TQCut::VariantDefinitionList* variantDefs)
virtual boolinitializeSelfSampleFolder(TQSampleFolder* sf)
boolTQCut::initializeVariants(TQSample* sample, bool hasNewVariantLayer)
boolTQCut::initializeVariantsSampleFolder(TQSampleFolder* sf, bool hasNewVariantLayer)
voidinitUniqueCut()
voidTObject::MakeZombie()
boolTQCut::printEvaluationStep(size_t indent) const
voidTQCut::printInternal(const TString& options, int indent)
voidTQCut::setBase(TQCut* base_)
boolTQCut::skipAnalysisJobs(TQSampleFolder* sf)
boolTQCut::verifyVariantSetup(const vector<TQCut::VariantHandle>& parentHandles)
private:
virtual Bool_tCheckTObjectHashConsistency() const

Data Members

public:
static TObject::(anonymous)TObject::kBitMask
static TObject::EStatusBitsTObject::kCanDelete
static TObject::EStatusBitsTObject::kCannotPick
static TObject::EStatusBitsTObject::kHasUUID
static TObject::(anonymous)TObject::kInconsistent
static TObject::EStatusBitsTObject::kInvalidObject
static TObject::(anonymous)TObject::kIsOnHeap
static TObject::EStatusBitsTObject::kIsReferenced
static TObject::EStatusBitsTObject::kMustCleanup
static TObject::EStatusBitsTObject::kNoContextMenu
static TObject::(anonymous)TObject::kNotDeleted
static TObject::EDeprecatedStatusBitsTObject::kObjInCanvas
static TObject::(anonymous)TObject::kOverwrite
static TObject::(anonymous)TObject::kSingleKey
static TObject::(anonymous)TObject::kWriteDelete
static TObject::(anonymous)TObject::kZombie
static boolprintOnVeto
protected:
boolenabled
TStringeventNumberBranch
TQObservable*eventNumberObservable!
vector<set<long> >eventNumbers
TObjArray*TQCut::fAnalysisJobs!
TQCut*TQCut::fBase
TStringTQCut::fCutExpression
TQCutIteratorTQCut::fCutItr!
TQObservable*TQCut::fCutObservable!
TObjArray*TQCut::fCuts
vector<TQSampleFolder*>TQCut::fInitializationHistory!
TQAnalysisJobIteratorTQCut::fJobItr!
TStringTNamed::fNameobject identifier
intTQCut::fPrintResultmax number of events for which cut decision (and weight value) should be printed
intTQCut::fPrintResultCount! transient member keeping track of how many decisions have already been printed
TQSample*TQCut::fSample!
boolTQCut::fSkipAnalysisJobsset based on tags on sample folders
boolTQCut::fSkipAnalysisJobsGlobalset based on tags during cut creation (from TQFolder)
TStringTNamed::fTitleobject title
TTree*TQCut::fTree!
TQToken*TQCut::fTreeToken!
TQCut::VariantResults*TQCut::fVariantResults!
vector<TQCut::VariantStackElement*>TQCut::fVariantStack!
TStringTQCut::fWeightExpression
TQObservable*TQCut::fWeightObservable!
static TObject::(anonymous)TObject::kOnlyPrepStep
TStringrunNumberBranch
TQObservable*runNumberObservable!
vector<long>runNumbers

Class Charts

Inheritance Chart:
TObject
TNamed
TQCut
TQUniqueCut

Function documentation

bool isMergeable() const
 returns false, since TQUniqueCuts are never mergeable
bool setBranchNames(const TString& runBranch, const TString& evtBranch)
 set the branch names used for run number and event number
void initUniqueCut()
 initialize this instance of TQUniqueCut
TQUniqueCut()
 default constructor of the TQUniqueCut
TQUniqueCut(const TString& name)
 default constructor of the TQUniqueCut
TQUniqueCut(const TString& runBranch, const TString& evtBranch)
 constructor of the TQUniqueCut class, taking branch names for run and event number
TQUniqueCut(const TString& name, const TString& runBranch, const TString& evtBranch)
 constructor of the TQUniqueCut class, taking a name as well as branch names for run and event number
const TString& getRunNumberExpression() const
const TString& getEventNumberExpression() const
void clear()
 clear all saved information
void setActive(bool active)
 activate/deactivate this instance
TObjArray* getOwnBranches()
 add the branches required by this instance of TQUniqueCut to the internal list of branches
bool checkUnique(set<long>& entries, long newEntry)
 check if an entry is new to a set
 if so, add it at the appropriate place and return true
 else return false
long getIndex(vector<long>& entries, long entry)
 retrieve the index of an entry in a sorted vector
 if the entry is not in the vector yet, add it appropriately
 return the index of the element
bool passed(bool doPrint) const
 checks the run and event numbers of the current event
 returns true if they are unique, false if this combination
 has already been encountered before
bool initializeObservables()
 initialize the observables required by this TQUniqueCut
bool finalizeObservables()
 finalize the observables required by this TQUniqueCut
void printLists() const
 print the internal lists of run and event numbers
 WARNING: these lists can be excessively long!
bool initializeSelfSampleFolder(TQSampleFolder* sf)
@tag:[resetUniqueCut] If this boolean sample folder tag is set to true the run and event numbers of this cut are cleared upon initialization and finalization of the unique cut.
bool finalizeSelfSampleFolder(TQSampleFolder* sf)
TQUniqueCut()
TQUniqueCut(const TString& name)